我是mvc的新手很抱歉,如果这听起来很愚蠢:
我有一个观点,使用以下代码:
using (Html.BeginForm("Index", "testcontroller", FormMethod.Post))
{
@Html.Hidden("customerReferenceNumber", "116999")
@Html.Hidden("customerName", "John Smith")
@Html.Hidden("mobileNumber", "12345")
<input type="submit" value="Mobile Lost or Stolen?" />
}
我的另一个名为testview2的视图和一个名为testcontroller的控制器,有一个方法:
public string Index(int customerref,string customername,string mobilenumber)
{
}
如何在按钮点击第一个视图后将html.hidden字段中的硬编码值传送到另一页?
答案 0 :(得分:0)
actionPlease在同一控制器中创建第二个索引操作并向其添加[httppost]过滤器
using (Html.BeginForm("Index", "testcontroller", FormMethod.Post))
{
@Html.Hidden("customerReferenceNumber", 116999)
@Html.Hidden("customerName", "John Smith")
@Html.Hidden("mobileNumber", "12345")
<input type="submit" value="Mobile Lost or Stolen?" />
}
[HttpPost]
public string Index(int customerReferenceNumber,string customerName,string mobileNumber)
{
}
答案 1 :(得分:0)
如果您可能name your parameters correctly it seems to work fine,也就是说您需要输入名称以匹配方法中的参数。
&#34;的 customerReferenceNumber 强>&#34;不等于&#34; customerref &#34;
此外,由于您没有通过customerref
,因此它应该抛出异常,因为它需要int
,而MVC不知道要传递的是什么int
。
查看:
@model HelloWorldMvcApp.ResultViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<!-- template from http://getbootstrap.com/getting-started -->
<html lang="en">
<body>
@using (Html.BeginForm())
{
@Html.Hidden("customerReferenceNumber", "116999")
@Html.Hidden("customerName", "John Smith")
@Html.Hidden("mobileNumber", "12345")
<input type="submit" value="Mobile Lost or Stolen?" />
}
@if (Model != null)
{
<p>
Results: <br />
@Model.CustomerReferenceNumber<br />
@Model.CustomerName<br />
@Model.MobileNumber<br />
</p>
}
</body>
</html>
控制器:
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
ResultViewModel model = null;
return View(model);
}
[HttpPost]
public ActionResult Index(int customerReferenceNumber,
string customerName,
string mobileNumber)
{
var model = new ResultViewModel();
model.CustomerName = customerName;
model.CustomerReferenceNumber = customerReferenceNumber;
model.MobileNumber = mobileNumber;
return View(model);
}
}
答案 2 :(得分:0)
要在另一个页面上获取它意味着另一个控制器说Controller2,“索引”方法,你应该将视图发布到另一个控制器动作,其中隐藏的字段绑定到模型。
@model HelloWorldMvcApp.ResultViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<body>
@using (Html.BeginForm("Index","TestController2"))
{
@Html.HiddenFor(m=>m.CustomerReferenceNumber)
@Html.HiddenFor(m=>m.MobileNumber)
@Html.HiddenFor(m=>m.CustomerName)
}
</body>
</html>
在TestController2中
[HttpPost]
ActionResult Index(ResultViewModel model)
{
//you will get values in model
}
答案 3 :(得分:0)
使用模型或将控制器更新为
public string Index(int customerReferenceNumber, string customerName, string mobileNumber)
{
}
请记住,参数名称与隐藏字段的名称相同。
答案 4 :(得分:0)
名称应该匹配。由此仅发生参数绑定。
并且,控制器操作始终返回ActionResult
或从中派生的任何内容。您编写的方法被视为常规方法,而不是控制器操作
using (Html.BeginForm("Index", "testcontroller", FormMethod.Post))
{
@Html.Hidden("customerReferenceNumber", "116999")
@Html.Hidden("customerName", "John Smith")
@Html.Hidden("mobileNumber", "12345")
<input type="submit" value="Mobile Lost or Stolen?" />
}
这是好的。但控制器动作应定义为
public ActionResult Index(string customerReferenceNumber,string customerName,string mobileNumber)
{
}
注意名称的更改以及参数列表中的数据类型。