1 つのビューに複数のフォームを追加できますか? これは 1 つのモデルのみを使用して行うことができますか、それともフォームごとに異なるモデルを使用する必要がありますか? 誰かが良い例で私を説明したり、詳細に説明している良い記事を提案したりできますか.
質問する
3731 次
3 に答える
17
これは良い質問です。私が mvc の初心者だったとき、私自身これに問題がありました。
ここでの良い例は、同じページの登録フォームとログインフォームです。
これを解決するために欠かせないキーワードがViewModelです。
Model クラスで:
public class LoginModel
{
public string UserName { get; set; }
public string UserPassword { get; set; }
}
public class RegisterModel
{
public int UserId { get; set; }
public string UserName { get; set; }
public string UserPassword { get; set; }
}
public class ViewModel
{
public LoginModel LoginModel { get; set; }
public RegisterModel RegisterModel { get; set; }
}
あなたのコントローラーで:
public ActionResult Index()
{
var model = new ViewModel();
model.LoginModel = new LoginModel();
model.RegisterModel = new RegisterModel();
return View(model);
}
あなたのビューでは、1 つのメイン ビューと 2 つの部分ビューを使用して分割しました。
メイン ビュー:
@model YourProject.Models.ViewModel
@Html.Partial("_LoginForm", Model.LoginModel)
@Html.Partial("_RegisterForm", Model.RegisterModel)
部分ビュー _LoginForm:
@model YourProject.Models.LoginModel
@using (Html.BeginForm("Login", "Home", FormMethod.Post))
{
@Html.TextBoxFor(x => x.UserName)
@Html.PasswordFor(x => x.UserPassword)
<input type="submit" value="Log In" />
}
部分ビュー _RegisterForm:
@model YourProject.Models.RegisterModel
@using (Html.BeginForm("Register", "Home", FormMethod.Post))
{
@Html.TextBoxFor(x => x.UserName)
@Html.PasswordFor(x => x.UserPassword)
<input type="submit" value="Register" />
}
不明なコードがある場合はお尋ねください。
于 2013-07-25T14:20:48.697 に答える
1
Larsの答えは良い解決策です。私は次のようなものでも行きます:
public class RegisterModel : LoginModel
{
public int UserId { get; set; }
}
このようにして、基本的なモデル クラスを拡張するだけで、数行のコードを節約できます。
于 2013-07-25T15:12:47.273 に答える