我正在编辑一个几乎没有留下任何评论的人编写的代码。我试图找到httppost
函数中的参数来自哪里。(在这种情况下ism
(。
[HttpPost]
[SessionCheckFilter]
[LogFilter]
[ValidateInput(false)]
[ActionName("Save")]
public ActionResult Save(StructureViewModelPOST ism){...}
问题是,StructureViewModelPOST
仅用于此函数。没有其他引用。我想更改ism
中的数据,但我不知道它来自哪里。当有人按下我的表单中的"保存"或"保存并关闭"按钮时,将调用此函数
<a class="btn btn-primary fixed-width navigation" href="#" onclick="checkTotalValue(1);"><i class="icon-save pull-left navigation"></i>Save</a>
表单在我的视图中是这样创建的:
@using (Html.BeginForm("Save", "Invoice", FormMethod.Post, new { @class = "form-horizontal" }))
我意识到我没有为您提供回答这个问题所需的所有信息,但我不能只粘贴整个项目,我真的不知道需要什么信息来回答它。
MVC 模型绑定器按照约定工作,也就是说,它尝试将 HTML <input name="ThePropertyName" id="ThePropertyName"/>
元素的名称和 ID 与控制器中的 post 操作接受的模型类中的属性进行匹配。
所以如果类StructureViewModelPOST
有一个属性string ThePropertyName { get; set; }
,此属性将使用具有name="ThePropertyName"
的匹配输入的值填充。
有多种方法可以使用正确的名称呈现此输入。
使用使用 @model
指令定义的 ViewModel,并解析要与编辑器模板一起使用的输入类型:
@model StructureViewModelPOST
@Html.EditorFor(m => m.ThePropertyName)
或者更直接:
@Html.TextBox(nameof(StructureViewModelPOST.ThePropertyName), "")
基本上操作参数是从发布的表单字段绑定的
每个字段都绑定到具有相同名称的相应属性
例:
<input type='text' name='TotalDiscount' />
将绑定到主义。总折扣
检查这些链接
什么是 MVC ASP.NET 模型绑定?
和模型活页夹部分在这里
https://weblogs.asp.net/scottgu/asp-net-mvc-preview-5-and-form-posting-scenarios