在ASP中使用POST传递变量.净MVC
本文关键字:变量 MVC POST ASP | 更新日期: 2023-09-27 18:12:06
我试图在asp.net MVC内传递字符串变量。我使用断点,所以我看到它确实去到控制器中的正确方法,但变量张贴等于null。
我的标记:
@{
ViewBag.Title = "TestForm";
}
<h2>TestForm</h2>
@using (Html.BeginForm()) {
<input type="text" id="testinput" />
<input type="submit" value="TestForm" />
}
我的控制器:
public ActionResult TestForm()
{
return View();
}
[HttpPost]
public ActionResult TestForm(string testinput)
{
Response.Write("[" + testinput + "]");
return View();
}
我把断点放在第二个TestForm方法中,testinput为null....我错过什么了吗?
注意:我意识到大多数时候我将使用模型来传递数据,但我想知道我也可以传递字符串。
作为同一个问题的一部分,我如何传递几个变量?我的控制器中的方法是否看起来像这样:
[HttpPost]
public ActionResult TestForm(string var1, var2)
{
}
对我来说,看起来你设置了id而不是名称。我每天都用MVC3,所以我没有复制你的样品。(我20个小时都在编程,但仍然有动力去帮助别人)如果它不起作用,请告诉我。但对我来说,看起来你必须设置"name"属性…不是id属性。试试那个……如果不行,我现在就等着帮你。
<input type="text" id="testinput" name="testinput" />
稍微单独说明一下,像你这样传递变量并没有错,但更有效的方法是传递强类型视图模型,使您能够利用MVC的许多优点:
- <
- 强类型的视图/gh>MVC模型绑定
- Html助手
创建新的视图模型:
public class TestModel
{
public string TestInput { get; set; }
}
测试控制器:
[HttpGet]
public ActionResult TestForm()
{
return View();
}
[HttpPost]
public ActionResult TestForm(FormCollection collection)
{
var model = new TestModel();
TryUpdateModel(model, collection);
Response.Write("[" + model.TestInput + "]");
return View();
}
你的观点:
@model <yourproject>.Models.TestModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>TestForm</title>
</head>
<body>
<div>
@using(Html.BeginForm())
{
<div class="editor-label">
@Html.LabelFor(m => m.TestInput)
</div>
<div class="editor-label">
@Html.TextBoxFor(m => m.TestInput)
</div>
<input type="submit" value="Test Form"/>
}
</div>
</body>
</html>