私はASP.NET MVCを勉強しています。5.ビュー "Create"を作成しました。しかし、私はRazorを使って入力フィールドを生成しているわけではありません。純粋なhtmlで入力を使用しています。HttpPostの後の塗りつぶしのフィールドCreate - オブジェクトは入力を使用してnullです
Create.cshtml
@model MyProject.Product
<h2>Create Product</h2>
<form method="post">
Description: <br />
<input type="text" name="Description" id="Description"/> <br />
ValueType: <br />
<input type="text" name="ValueType" id="ValueType"/>
<br />
<input type="submit" name="btSend"/>
</form>
マイコントローラー:
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Product product)
{
if (ModelState.IsValid)
{
db.Product.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(product);
}
It works fine. I can create new products.
しかし、私はモデルで注釈をいくつかのサーバー側の検証を使用する必要があります。 したがって、データを送信したいと思います。モデルが有効でない場合は、値を使用してCreateに戻ります。私は検証メッセージを入れる方法を知っています。だから、私はこれを試しました:
@model MyProject.Product
<h2>Create Product</h2>
<form method="post">
Description: <br />
<input type="text" name="Description" id="Description" value="@Model.Description"/> <br />
ValueType: <br />
<input type="text" name="ValueType" id="ValueType" value="@Model.ValueType"/>
<br />
<input type="submit" name="btSend"/>
</form>
純粋な入力をモデル化するにはどうすればいいですか?
なぜNULL値ですか。
ありがとうございます。
なぜあなたは剃刀を使用していませんか? '@Html.LabelFor()'、 '@Html.TextBoxFor()'、 '@ Html.ValidationMessageFor()'を使ってフォームコントロールを正しく生成し、生成したすべてのHTMLを見て、 2ウェイモデルバインドと検証なし –
私はhtmlが作成されたフロントエンド開発者と協力して作業するためです。私は、入力型で作業する方法があるかどうかを知りたい。どのようにそれをバインドするには? – ComplexityAlg
'HtmlHelper'メソッドを使うと、双方向モデルのバインディングと検証に必要な正しいhtmlが得られます。そして '@ Model.Description'は剃刀コードなので、あなたが剃刀を使用したくないという要望はありません –