如何在ASP.NET MVC 4中通过POST传递值

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的情况下,引擎不知道您正在尝试输出返回的字符串.它只是认为你在调用一种方法.