[英]Details action not working in asp.net mvc 4
我正在嘗試使用asp.net mvc 4和實體框架6創建一個網站,通過單擊“ Profile
按鈕,用戶可以查看其個人資料詳細信息。 但是每次我嘗試Login
,都會出現如下錯誤。 如果我注釋掉ProfileView
部分,則可以登錄。 我的代碼如下
調節器
public ActionResult ProfileView(int UserId=0)
{
UserInfo profile = db.UserInfoes.Find(UserId);
if (Session["UserBOID"] != null)
{
return View(profile);
}
else
{
return RedirectToAction("Login");
}
}
視圖
@model ABCoLtd.Models.MkistatVsUserLogin
@if (@Session["UserBOID"] != null)
{
<li>Welcome, <b>@Session["UserBOID"].ToString()</b></li>
foreach(var item in Model)
{
<li><a class="btn btn-info" href="@Url.Action("ProfileView", "Home", new { UserId=item.UserId })" target="_blank"><b>Profile</b></a></li>
}
}
自定義模型以在同一模型下使用不同的表
public class MkistatVsUserLogin
{
public IEnumerable<UserInfo> UserInfo { get; set; }
public IEnumerable<mkistat> mkistats { get; set; }
}
我的代碼有問題嗎? 如果是這樣,請給我一個解決方案,因為我非常需要此幫助。 您的幫助將不勝感激。 TNX。
更新
錯誤
編譯錯誤描述:在編譯為滿足此請求所需的資源期間發生錯誤。 請查看以下特定的錯誤詳細信息,並適當地修改您的源代碼。
編譯器錯誤消息:CS1579:foreach語句無法對'ABCoLtd.Models.MkistatVsUserLogin'類型的變量進行操作,因為'ABCoLtd.Models.MkistatVsUserLogin'不包含'GetEnumerator'的公共定義
源錯誤:行37:foreach(模型中的var項)
您僅將一個對象從控制器傳遞給視圖,因此如果要在其上循環,則需要將其更改為collection。
UserInfo profile = db.UserInfoes.Find(UserId);//This is only one object
將Model
更改為Model.UserInfo
,例如:
@model ABCoLtd.Models.MkistatVsUserLogin
@if (@Session["UserBOID"] != null)
{
<li>Welcome, <b>@Session["UserBOID"].ToString()</b></li>
foreach(var item in Model.UserInfo) <<---
{
<li><a class="btn btn-info" href="@Url.Action("ProfileView", "Home", new { UserId=item.UserId })" target="_blank"><b>Profile</b></a></li>
}
}
您必須在循環中使用集合Model.UserInfo
,而不是視圖模型本身。
首先,您要傳遞UserInfo對象進行查看
UserInfo profile = db.UserInfoes.Find(UserId);
問題是您的視圖需要MkistatVsUserLogin模型
@model ABCoLtd.Models.MkistatVsUserLogin
您必須傳遞MkistatVsUserLogin對象以在ProfileView ActionResult中查看,並使UserInfo List能夠將對象添加到集合中。
public class MkistatVsUserLogin
{
public List<UserInfo> UserInfo { get; set; }
public IEnumerable<mkistat> mkistats { get; set; }
}
public ActionResult ProfileView(int UserId=0)
{
UserInfo profile = db.UserInfoes.Find(UserId);
MkistatVsUserLogin model = new MkistatVsUserLogin();
model.UserInfo = new List<UserInfo>();
model.UserInfo.Add(profile);
if (Session["UserBOID"] != null)
{
return View(model);
}
else
{
return RedirectToAction("Login");
}
}
現在您認為第二個問題。 您正在循環MkistatVsUserLogin模型,應該循環UserInfo集合
foreach(var item in Model.UserInfo)
{
<li><a class="btn btn-info" href="@Url.Action("ProfileView", "Home", new { UserId=item.UserId })" target="_blank"><b>Profile</b></a></li>
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.