1 つのビューに 2 つのモデルを表示したいです。ページにはLoginViewModel
と の両方が含まれていますRegisterViewModel
。
例えば
public class LoginViewModel
{
public string Email { get; set; }
public string Password { get; set; }
}
public class RegisterViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
これら 2 つの ViewModel を保持する別の ViewModel を作成する必要がありますか?
public BigViewModel
{
public LoginViewModel LoginViewModel{get; set;}
public RegisterViewModel RegisterViewModel {get; set;}
}
検証属性をビューに渡す必要があります。そのために ViewModel が必要です。
次のような別の方法はありませんか ( なしBigViewModel
):
@model ViewModel.RegisterViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
@Html.TextBoxFor(model => model.Name)
@Html.TextBoxFor(model => model.Email)
@Html.PasswordFor(model => model.Password)
}
@model ViewModel.LoginViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
@Html.TextBoxFor(model => model.Email)
@Html.PasswordFor(model => model.Password)
}
ベストアンサー1
方法はいろいろあります...
BigViewModel では次の操作を実行します。
@model BigViewModel @using(Html.BeginForm()) { @Html.EditorFor(o => o.LoginViewModel.Email) ... }
2つの追加ビューを作成できます
ログイン.cshtml
@model ViewModel.LoginViewModel @using (Html.BeginForm("Login", "Auth", FormMethod.Post)) { @Html.TextBoxFor(model => model.Email) @Html.PasswordFor(model => model.Password) }
register.cshtmlも同じです
作成後、メインビューでレンダリングし、ビューモデル/ビューデータを渡す必要があります。
つまり次のようになります:
@{Html.RenderPartial("login", ViewBag.Login);} @{Html.RenderPartial("register", ViewBag.Register);}
または
@{Html.RenderPartial("login", Model.LoginViewModel)} @{Html.RenderPartial("register", Model.RegisterViewModel)}
Ajaxを使用すると、Webサイトの各部分がより独立するようになります
iframes
しかし、おそらくそうではないだろう