我正在编辑由几乎没有留言的人编写的代码。我试图找到httppost
函数中的参数来自何处。 (在这种情况下为ism
)。
[HttpPost]
[SessionCheckFilter]
[LogFilter]
[ValidateInput(false)]
[ActionName("Save")]
public ActionResult Save(StructureViewModelPOST ism){...}
问题是,StructureViewModelPOST
仅用于此功能。没有其他参考。我想更改ism
中的数据,但我不知道它来自哪里。当有人按下" save"或者"保存并关闭"我表单中的按钮
<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" }))
我意识到我没有向您提供回答这个问题所需的所有信息,但我不能粘贴整个项目而我真的不知道需要回答哪些信息它
答案 0 :(得分:2)
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), "")
答案 1 :(得分:1)
基本上,动作参数是从已发布的表单字段绑定的
每个字段都绑定到具有相同名称的相应属性
示例:
$TCCookieName="TCSESSIONID"
$Cookies=$Response.Headers.'set-cookie'
$TCCookie= $cookies.Split(";")| Where-Object {$_ -match $TCCookieName}
$CookieName=$TCCookie.Split("=")[0]
$CookieValue=$TCCookie.Split("=")[1]
$TCSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$cookie = New-Object System.Net.Cookie
$cookie.Name = $CookieName
$cookie.Value = $CookieValue
$cookie.Domain=([uri]$TeamCityUrl).Host
$TCSession.Cookies.Add($cookie);
将绑定到ism.TotalDiscount
检查这些链接
What is model binding in ASP.NET MVC?
和模型粘合剂部分
https://weblogs.asp.net/scottgu/asp-net-mvc-preview-5-and-form-posting-scenarios