如何在IActionResult网络核心2中获取元组值



我有一个包含两个模型的视图。

这是我的cshtml代码:

@model Tuple<FITSWeb.Models.Test, FITSWeb.Models.Resultat>

<div class="modal-body form-horizontal">
<div class="row">
<div class="col-lg-12">
<div class="modal-header">
<h5 class="modal-title" id="ModalLabel">Selection du résultat</h5>
</div>
<div class="form-group" style="padding:10px">
<label class="control-label">Démarche</label>
<textarea readonly rows="3" class="form-control">@Model.Item1.Demarche</textarea>
<label class="control-label">Jeu d'entrée</label>
<textarea readonly rows="3" class="form-control">@Model.Item1.JeuEntree</textarea>
<label class="control-label">Résultat attendu</label>
<textarea readonly rows="3" class="form-control">@Model.Item1.ResultatAttendu</textarea>
</div>
<div class="modal-body">
Selectionner le résutat retenu pour :
</div>
<div class="form-group" style="padding:10px">
<label asp-for="@Model.Item2.Commentaire" class="control-label">Commentaire</label>
<textarea rows="3" asp-for="@Model.Item2.Commentaire" class="form-control"></textarea>
<span asp-validation-for="@Model.Item2.Commentaire" class="text-danger"></span>
</div>
<div class="modal-footer">
<input type="submit" value="Enregistrer" class="btn btn-primary mb-2" />
</div>
</div>
</div>
</div>

和cs代码:

public async Task<IActionResult> AddResult(long id)
{
Resultat TResultat = new Resultat();
var test = await _context.Test.Where(m => m.Id == id).Include(i => i.Resultats).FirstOrDefaultAsync();
if (test != null)
{
TResultat = await _context.Resultat.Where(m => m.Id == test.ResultatRef.Id).FirstOrDefaultAsync();
}
return PartialView("~/Views/Tests/_Result.cshtml", Tuple.Create<Test, Resultat>(test, TResultat));
}
return View();
}

提交后如何获取"test"one_answers"Tresultat"的元组值?

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> AddResult(long id, [Bind("Numero,Condition,Demarche,JeuEntree,ResultatAttendu,Utilisateur,DateCreation,DateModification,EstActif,Id")] Test test,
[Bind("IdTest,IdSession,Commentaire,EtatActuel,Utilisateur,DateCreation,Id")] Resultat TResultat)
{...}

这段代码不返回元组值,我找不到好的解决方案。

您可以尝试这样的方法(请注意,这只是一个示例(;您的"关于"csthml页面:

@model Tuple<M1, M2>
<form asp-action="AddResult">
<input  name="blah1" value="@Model.Item1.Field1" />
<input  name="blah2" value="@Model.Item2.Field2" />
<button type="submit">Submit</button>
</form>

后端GET操作:

public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
var vm = new Tuple<M1, M2>(new M1(), new M2());
return View(vm);
}

后端POST操作:

[HttpPost]
public IActionResult AddResult(MyViewModel o)
{
return RedirectToAction(nameof(About));
}

型号:

public class MyViewModel
{
public string Blah1 { get; set; }
public string Blah2 { get; set; }
}
public class M1
{
public string Field1 { get; set; }
}
public class M2
{
public string Field2 { get; set; }
}

在我看来,您应该只返回一个视图模型对象,而不是在GET操作中返回Tuple,因为这会给您带来更大的灵活性,更容易维护。

最新更新