Asp.net mvc ASP.NET MVC控制器未使用ModelView向PartialView传递正确的值
我正在尝试创建CustomMembershipProvider。当用户单击登录时,我想显示欢迎用户名!在共享/_layout.cshtml中包含的PartialView中 以下是控制器类:Asp.net mvc ASP.NET MVC控制器未使用ModelView向PartialView传递正确的值,asp.net-mvc,Asp.net Mvc,我正在尝试创建CustomMembershipProvider。当用户单击登录时,我想显示欢迎用户名!在共享/_layout.cshtml中包含的PartialView中 以下是控制器类: [ChildActionOnly] public ActionResult WelcomeMessage() { var userName = this.HttpContext.Session["LoggedInUser"]; WelcomeViewMo
[ChildActionOnly]
public ActionResult WelcomeMessage()
{
var userName = this.HttpContext.Session["LoggedInUser"];
WelcomeViewModel wView = new WelcomeViewModel();
if (userName != null)
{
User user = this.db.Users.FirstOrDefault(x => x.UserName == userName);
wView.userId = user.Id;
wView.Message = user.UserName;
}
return PartialView(wView);
}
以下是PartialView代码:
@model MvcApplication1.ViewModels.WelcomeViewModel
@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", new { id = Model.userId })
我获得了正确渲染的视图,但是当我单击超链接时,出现以下错误:
参数字典包含“MVCAPApplication1.Controllers.AccountController”中方法“System.Web.Mvc.ViewResult DetailsInt32”的非null类型“System.Int32”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数
似乎使用id=null调用了编辑操作,但是用户名显示正确。我最初使用ViewBag,并根据SO解决方案切换到ViewModel。
提前谢谢。试试这个
@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", new { id = Model.userId }, null)
问题是您设置了ActionLink方法的htmlAttributes参数。试试这个
@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", new { id = Model.userId }, null)
问题是您设置了ActionLink方法的htmlAttributes参数。您遇到了@Html.ActionLink的错误,您需要这个
基本上,您需要传递htmlAttributes参数来点击正确的重载,如果您不需要设置任何重载,您可以将其作为null传递。您点击的@Html.ActionLink是错误的,您需要这个
基本上,您需要传递htmlAttributes参数以命中正确的重载,如果不需要设置任何重载,您可以将其作为null传递。好吧,看起来您使用了错误的重载,试一试:
@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account",
new { id = Model.userId },
null)
看来你用错了超负荷,试一试:
@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account",
new { id = Model.userId },
null)
动作是编辑还是细节?动作是编辑还是细节?@Purusartha Awesome:很高兴我能这么做help@Purusartha真棒:很高兴我能帮忙