私はASP.net MVCを学んでいるので、私の問題を説明するのが悪ければ、私に同行してください。ASP.net MVC4:部分ビューで別のモデルを使用していますか?
ビュー内で継承されているモデルとは異なるモデルを部分ビューで使用することはできますか?
私の見解Index
は現在、ユーザーの承認を扱っているLoginModel
を継承しています。ユーザーが承認されると、Index
にはユーザーのtodos
のリストが表示されます。 todos
はLINQ経由で取得されます。
だから私の部分図でSystem.Web.Mvc.ViewPage<IEnumerable<todo_moble_oauth.Models.todo>>
を継承したいが、私はこれを使用するとき、私はエラーを取得する: `辞書に渡されたモデルアイテムはこれが私のIndex
図であるタイプ
System.Data.Linq.DataQuery`1[todo_moble_oauth.Models.todo]', but this dictionary requires a model item of type 'todo_moble_oauth.Models.LoginModel'
である
次のように私の部分図_ListTodos
は次のとおりです。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<todo_moble_oauth.Models.todo>>" %>
<% foreach (var item in Model) { %>
<%: Html.DisplayFor(modelItem => item.title) %>
<%: Html.DisplayFor(modelItem => item.description) %>
<% } %>
私LoginModel
は、次のあります
public class LoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
HomeController
Index()
方法:
[AllowAnonymous]
public ActionResult Index()
{
// if user is logged in, show todo list
if (Request.IsAuthenticated)
{
//var currentUser = Membership.GetUser().ProviderUserKey;
todosDataContext objLinq = new todosDataContext();
var todos = objLinq.todos.Select(x => x);
return View(todos);
}
return View();
}
すべてのヘルプは大歓迎です、ありがとう。
大変ありがとうございます。これは素晴らしい解決策です。私は '%Html.Partial(" _ ListTodos "、Model.Todos)を切り替える必要がありました。 %> 'を<%Html.RenderPartial(" _ ListTodos "、Model.Todos); %> 'それを動作させるためには、すべてが金である、ありがとう! – Neil
私は同様の状況がありましたが、モデルの新しいインスタンスを作成するだけで済むので、モデルの構造は少し異なり、変更する必要はありませんでした。私の必要に応じて、このコード行(剃刀構文)を使用しました。 @ Html.Partial( "dialogs/_partial-view"、new MyObjectModel()) – David