MVC如何使用参数返回视图

Gib*_*boK 6 c# asp.net-mvc razor

目前我有一个可行的方法,它在点击Razor中的代码链接时正常工作:

@Html.ActionLink("New User ,Register", "Register", new { OpenID = Model.OpenID })
Run Code Online (Sandbox Code Playgroud)

我希望从控制器返回视图具有相同的效果,此时我正在使用此代码但没有成功

return View("Register", lm);
Run Code Online (Sandbox Code Playgroud)

我在MVC很新,所以我有点困惑.返回的视图与我的最后一个代码未命中smt,我支持与该部分相关联new { OpenID = Model.OpenID }

你能指出我正确的方向吗?

这是我的控制器的方法:

public ActionResult Register(string OpenID)
Run Code Online (Sandbox Code Playgroud)

Shy*_*yju 13

尽量避免 ViewDataViewBag.尝试使用强类型ViewModels.这使你的代码干净(下一个开发人员将维护你的代码,HAPPY)

OpenID在你的房子里有一个房产ViewModel

public class RegisterViewModel
{
     //Other Properties also
     public string OpenID { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以在action方法中返回视图时设置此值:

public ActionResult Register(string OpenId)
{
     var vm = new RegisterViewModel();
     vm.OpenID = OpenId;
     return View(vm);
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*rry 5

您可以将所需的任何数据添加到ViewBag变量中.

在您的控制器中,您可以设置值.

调节器

public ActionResult Register()
{
    ViewBag.OpenID = OpenID;

    return View()
}
Run Code Online (Sandbox Code Playgroud)

在剃刀视图中,您可以以相同的方式访问它

MVC3 Razor View

@ViewBag.OpenID
Run Code Online (Sandbox Code Playgroud)