mvc httppost函数从

时间:2017-06-22 09:26:53

标签: asp.net-mvc

我正在编辑由几乎没有留言的人编写的代码。我试图找到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" }))

我意识到我没有向您提供回答这个问题所需的所有信息,但我不能粘贴整个项目而我真的不知道需要回答哪些信息它

2 个答案:

答案 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