MVC3 Razor - 如何将数据从控制器传递到控制器并返回控制器
我有一个视图,用户将填充所有内容 - 但涉及父实体。我使用ViewBag将该Id传递给了我的视图,但是我不知道如何将它返回到控制器中的发布操作。我试图隐藏表单域,但它不是在后显示,否则我不知道如何抓住它... 控制器:MVC3 Razor - 如何将数据从控制器传递到控制器并返回控制器
public ActionResult AddCar(int id)
{
ViewBag.Id = id;
return View();
}
视图(尝试):
@using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = carId }))
{
View (tried):
@Html.Hidden(carId.ToString())
如何在我的控制器中检索我的发布操作中的值?还是有更好的/不同的方法来处理它? 感谢
隐藏字段应该作品。问题是你的控制器不接受它。
您可以使用ViewModel来实现这一点。或者,在您的动作中使用以下代码:
id = Request.Form["id"]
尝试这样的:
@using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = ViewBag.Id }))
{
...
}
谢谢。您是否可以在我的控制器中检索后操作中的值? – user1166147 2012-03-19 07:54:25
你可以让你的控制器动作带有'Id'属性的视图模型。默认的模型联编程序会自动填充这个属性。 – 2012-03-19 07:56:06
为后创建一个视图模型,这将是如下
public class Post
{
int id {get;set;}
//other properties
}
,并在你的控制器动作发个帖子对象
public ActionResult AddCar(int id)
{
Post post = new Post();
post.Id = id;
return View(post);
}
您的观点应该使用Post类作为模型
@model namespace.Post
@using (Html.BeginForm("AddReturn", "DealerAdmin", FormMethod.Post)
{
@Html.HiddenFor(model => model.Id)
}
和你的控制器动作,其结果预计应该有一个帖子对象作为输入参数
public ActionResult AddReturn(Post post)
{
//your code
}
好的解决方案 谢谢 – Jones 2013-07-18 06:32:16
有一些方法
1.查询字符串发送值,如果只有一个送价值控制器
2.如果你想从视图中收集许多领域可以使用的FormCollection
样品::
public actionresult method1()
{
int id = //everything you want
viewbag.id=id;
....
//and other field to collect
}
鉴于
<form method="post" action="method1" enctype="now i dont remeber the value of this option" >
@html.hidden("id")
.....
<input type="submit" value"Send"/>
</form>
[httpPost]
public actionresult method1(fromcollection collection)
{
int id = collection.get("id");
....
//and other field to collect
}
谢谢你的回应。我使用了Robby Shaw的Request.Form。 – user1166147 2012-03-19 08:23:45