MVC如何使用参数返回视图
目前我有一个可行的方法,它在点击Razor中的代码链接时正在工作:
@Html.ActionLink("New User ,Register", "Register", new { OpenID = Model.OpenID })
我想从控制器返回视图具有相同的效果,此时我正在使用此代码但没有成功
return View("Register", lm);
我在MVC很新,所以我有点困惑。 返回的视图与我的上一个代码未命中smt并且我支持与new { OpenID = Model.OpenID }
的部分new { OpenID = Model.OpenID }
你能指出我正确的方向吗?
这是我的控制器的方法:
public ActionResult Register(string OpenID)
尽量避免使用 ViewData
和ViewBag
。 尝试使用强类型的ViewModels
。 这使你的代码干净( 下一个开发人员将维护你的代码,HAPPY )
在ViewModel
有一个名为OpenID
的属性
public class RegisterViewModel { //Other Properties also public string OpenID { set; get; } }
现在,您可以在action
方法中返回视图时设置此值:
public ActionResult Register(string OpenId) { var vm = new RegisterViewModel(); vm.OpenID = OpenId; return View(vm); }
您可以将所需的任何数据添加到ViewBag变量中。
在您的控制器中,您可以设置值。
调节器
public ActionResult Register() { ViewBag.OpenID = OpenID; return View() }
在剃刀视图中,您可以以相同的方式访问它
MVC3 Razor View
@ViewBag.OpenID
请看一下这个视图(ViewA):
@Html.ActionLink("My link", "ViewB", new { someData = "some data I'm passing on" })
而这两个动作:
public ActionResult ViewA() { return View(); } public ActionResult ViewB(string someData) { //Here someData has the value "some data I'm passing on" return View(); }
我们只是通过get传递值(即查询字符串)。 通过匹配名称,MVC能够为我们做魔术=)
希望这可以帮助。
问候