在ASP.NET MVC中使用POST传递变量

sar*_*ake 9 c# asp.net-mvc http-post

我试图在asp.net MVC中传递一个字符串变量.我使用断点,所以我看到它确实转到控制器中的正确方法,但发布的变量等于null.

我的加价:

@{
    ViewBag.Title = "TestForm";
}

<h2>TestForm</h2>

@using (Html.BeginForm()) {
   <input type="text" id="testinput" />

    <input type="submit" value="TestForm" />
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public ActionResult TestForm()
{
    return View();
} 

[HttpPost]
public ActionResult TestForm(string testinput)
{
    Response.Write("[" + testinput + "]");

    return View();
}
Run Code Online (Sandbox Code Playgroud)

我将断点放在第二个TestForm方法中,testinput为null ....我错过了什么吗?

注意:我意识到大部分时间我都会使用模型传递数据,但我想知道我也可以传递字符串.

作为同一问题的一部分,我如何传递几个变量?我的控制器中的方法是这样的:

[HttpPost]
public ActionResult TestForm(string var1, var2)
{
}
Run Code Online (Sandbox Code Playgroud)

dkn*_*ack 19

对我来说,看起来你设置的id不是名字.我每天都使用MVC3,所以我不会重现你的样本.(我醒了20个小时编程;)但仍然有动力去帮助)请告诉我它是否不起作用.但对我来说,看起来你必须设置"name"属性...而不是id属性.试试......我现在正等着帮助你,如果它不起作用.

     <input type="text" id="testinput" name="testinput" />
Run Code Online (Sandbox Code Playgroud)

  • 最后一句可能已被省略.你粗鲁. (12认同)
  • @sarsnake - 这与微软无关.浏览器将值发布到服务器.名称字段用于html表单,并且一直都是.原因是您只能有一个具有任何给定ID的项目,但有几个项目可以具有相同的名称.这样可以轻松创建项目列表.不要抱怨微软您实际上并不了解的事情. (8认同)
  • 不,微软用mvc真的很棒,不要考虑微软.它关于网络标准.基本上,id属性用于应用javascript(getElementsById,CSS-StyleSheets,jQuery等).name属性与帖子和异步(数据驱动)事物相关. (7认同)