如何将模型值从视图传递到控制器?
Posted
技术标签:
【中文标题】如何将模型值从视图传递到控制器?【英文标题】:How to pass model values from a view to a controller? 【发布时间】:2018-02-25 14:29:52 【问题描述】:我在 Mac 中使用 VSCode 创建 MVC。
参数“new question = @Model ”不应该将值从视图传递到控制器?
查看代码:
@model ProblemsV4.Models.ProblemModel
<h2>New Solution</h2>
@using(html.BeginForm("SaveSolution", "Problem", new problem = @Model , FormMethod.Get))
<label>Solution: </label>
<input type="text" name="solution" /><br/><br/>
<input type="submit" value="Save"/>
控制器代码:
public IActionResult SaveSolution(ProblemModel problemModel, string solution)
SolutionModel model = new SolutionModel();
model.Solution = solution;
ProblemBC bc = new ProblemBC();
bc.AddSolution(model);
List<ProblemModel> models = bc.ListAll();
ViewBag.Message = "Solução inserida com sucesso";
return View("Index", models);
【问题讨论】:
【参考方案1】:您应该在控制器处收到HttpPost
,并使用HiddenFor
发送模型的参数,这是一种
HtmlHelper
不显示任何输入。
BeginForm 方法有许多签名,其中一个包含 Object routeValues,即包含路由参数的对象。你不需要用那个, 你可以像这样使用其他签名:https://msdn.microsoft.com/en-us/library/dd460344(v=vs.118).aspx
第一步:
[HttpPost]
public IActionResult SaveSolution(ProblemModel problemModel, string solution)
SolutionModel model = new SolutionModel();
model.Solution = solution;
ProblemBC bc = new ProblemBC();
bc.AddSolution(model);
List<ProblemModel> models = bc.ListAll();
ViewBag.Message = "Solução inserida com sucesso";
return View("Index", models);
第二步:
@model ProblemsV4.Models.ProblemModel
<h2>New Solution</h2>
@using(Html.BeginForm("SaveSolution", "Problem", FormMethod.Post))
<label>Solution: </label>
<input type="text" name="solution" /><br/><br/>
@Html.HiddenFor(model => model.Problem)
@Html.HiddenFor(model => model.Description)
@Html.HiddenFor(model => model.ID)
<input type="submit" value="Save"/>
【讨论】:
删除new problem = @Model.Problem
、new description = @Model.Description
等 - 即添加无效的html属性!以上是关于如何将模型值从视图传递到控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 4.2 设置标志并将一些值从 Popup 呈现模型视图控制器传递到 Tabbar 主视图控制器?
如何将值从 tableview 传递到 collectionview
在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?
在 MVC 5 中,如何将表对象数据作为列表传递给控制器视图模型?