我已经在一个大型项目上工作了几天。除此部分外,其他全部完成。我正在尝试将2个文本框传递到我的家庭控制器方法中。
我尝试使用“模型”。和“项目”。但没有运气。它总是传递null
<p>
@Html.ActionLink("Display", "Home", FormMethod.Post)
</p>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
Month:<input type="text" name="Month" id="MonthInput">
Extra:<input type="text" name="Extra" id="ExtraInput"><br /><br />
<input type="submit" value="Add" class="btn btn-default"> <br> <br>
</div>
}
并且在家庭控制器中是
[HttpPost]
public ActionResult Display(String Month, String Extra)
{
if (ModelState.IsValid)
{
...
return RedirectToAction("Index");
}
return view;
}
我希望它通过单击“添加”按钮时在文本框中键入的任何值,但它提供空值
答案 0 :(得分:0)
为了正确地映射到操作的参数,必须使用name
属性。
@using (Html.BeginForm("Display", "Home"))
{
@Html.AntiForgeryToken()
<div>
Month:<input type="text" name="Month" id="MonthInput">
Extra:<input type="text" name="Extra" id="ExtraInput"><br /><br />
<input type="submit" value="Add" class="btn btn-default">
</div>
}
完全不相关,但是似乎您有2个嵌套的表单,并且其中一个POST到php
页。那是想要的吗?
也请删除以下代码,因为它没有任何意义:
<p>
@Html.ActionLink("Display", "Home", FormMethod.Post)
</p>
答案 1 :(得分:0)
要补充上一个答案,我建议在控制器中接受该表单作为FormCollection,因为该表单似乎与模型无关:
[HttpPost]
public ActionResult Display(FormCollection collection)
{
if (ModelState.IsValid)
{
string month = collection["Month"];
string extra = collection["Extra"];
return RedirectToAction("Index");
}
return View();
}
答案 2 :(得分:0)
尝试一下
视图中
@using (Html.BeginForm("Display", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div>
Month:<input type="text" name="Month" id="MonthInput">
Extra:<input type="text" name="Extra" id="ExtraInput"><br /><br />
<input type="submit" value="Add" class="btn btn-default"> <br> <br>
</div>
}
在控制器中,
[HttpPost]
public ActionResult Display(SomeClass someClass)
{
if (ModelState.IsValid)
{
...
return RedirectToAction("Index");
}
return view;
}
创建普通的班级名称SomeClass,根据您的要求命名,
public class SomeClass{
public string Month {get;set;}
public string Extra {get;set;}
}
输入的名称属性应与SomeClass的属性匹配,它将自动映射,然后可以使用someClass对象访问值
someClass.Month and someClass.Extra
答案 3 :(得分:0)
namespace Your.Models
{
public class DisplayModel
{
public string Month {get;set;}
public string Extra {get;set;}
}
}
[HttpPost]
public ActionResult Display(DisplayModel model)
{
if (ModelState.IsValid)
{
string month = model.Month;
string extra = model.Extra;
return RedirectToAction("Index");
}
return View();
}
@using Your.Models
@model DisplayModel
@using (Html.BeginForm("Display", "Home", new { id="displayview" }))
{
@Html.AntiForgeryToken()
<div>
Month:<input type="text" name="Month" id="MonthInput">
Extra:<input type="text" name="Extra" id="ExtraInput"><br /><br />
<input type="submit" value="Add" class="btn btn-default">
</div>
}