Mvc 4 - 如何使用viewbag将参数传递给局部视图

时间:2014-04-09 07:22:30

标签: asp.net-mvc asp.net-mvc-4 viewbag viewdata

我有一个_Layout页面,在这个_Layout页面中,我正在调用Partial View,如下所示。

<div>
    @{Html.RenderAction("_Account", "Home");}
</div>

_Account.cshtml

...

    @if (User.Identity.IsAuthenticated)
            {
                <p class="navbar-text navbar-right"> ****I want to write here "UserName"****</p>           }

如您所见,如果用户经过身份验证,我想编写userName。 (这是我的问题:))

正如您所料,我有一个登录控制器..

    [HttpPost]
    public ActionResult Index(UserModel model, string returnUrl)
    {
        // My codes for login ...
        var response = _userService.UserGet(request.UserName,request.Password);

        if(response != null)
         {
            ViewBag.UserName = response.User.Name;
         }
      // My another codes....
    }

所以,这是我的问题。我想用这个&#34; ViewBag.UserName&#34;在_Account局部视图中。我不想用饼干。有没有办法去id?

3 个答案:

答案 0 :(得分:0)

正如@Satpal所说

 @if (User.Identity.IsAuthenticated)
                {
                    <p class="navbar-text navbar-right">@ViewBag.UserName</p>           
    }

不是很简单吗?

答案 1 :(得分:0)

你可以这样做:

主要观点:

@Html.RenderAction("AccountPartial", "Home")

动作:

[HttpPost]
public ActionResult AccountPartial(UserModel model, string returnUrl)
{
// My codes for login ...
        var response = _userService.UserGet(request.UserName,request.Password);

        if(response != null)
         {
            ViewBag.UserName = response.User.Name;
         }
      // My another codes....
 return PartialView("~/Views/Home/_Account.cshtml",model);
}

部分视图:

@if (User.Identity.IsAuthenticated)
{
 <p class="navbar-text navbar-right">@ViewBag.UserName</p>           
}

答案 2 :(得分:0)

只需使用@ User.Identity.Name获取用户名