use*_*042 8 c# http-post asp.net-mvc-4
我在ASP.NET MVC 4中通过POST传递值有问题这是我在用户控制器中的操作:
[HttpPost]
public string Show(int? uid, string uname)
{
return uname + uid.ToString();
}
Run Code Online (Sandbox Code Playgroud)
这就是我试图在视图中传递值的方式:
@using (Html.BeginForm("Show", "User"))
{
Html.Hidden("uid", Model.Id);
Html.Hidden("uname", Model.UserName);
<input type="submit" value="+"/>
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<form action="/User/Show" method="post"> <input type="submit" value="+"/> </form>
Run Code Online (Sandbox Code Playgroud)
和:
@using(Html.BeginForm("Show", "User", FormMethod.Post, new { uid = 1, uname = "user1" }))
{
<input type="submit" value="+"/>
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<form action="/User/Show" method="post" uid="1" uname="user1"> <input type="submit" value="+"/></form>
Run Code Online (Sandbox Code Playgroud)
在两种方式中,Show动作都接收null而不是实际值.
Row*_*man 11
你的HtmlHelpers没有被渲染.使用Razor语法.
@using (Html.BeginForm("Show", "User"))
{
@Html.Hidden("uid", Model.Id);
@Html.Hidden("uname", Model.UserName);
<input type="submit" value="+"/>
}
Run Code Online (Sandbox Code Playgroud)
说明:
调用Html.Hidden(或Html.[anything])是一种方法,通常返回一个IHtmlString.在不使用@infront的情况下,引擎不知道您正在尝试输出返回的字符串.它只是认为你在调用一种方法.