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) 

尽量避免使用 ViewDataViewBag 。 尝试使用强类型的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能够为我们做魔术=)

希望这可以帮助。

问候