これが私の強く型付けされたビューです
@using ( Html.BeginForm("Index", "Home",null, FormMethod.Post, new { id="FormPost" }))
{
@Html.TextBoxFor(x => x.Name) @Html.ValidationMessageFor(x => x.Name)
<br />
@Html.TextBoxFor(x => x.LastName) @Html.ValidationMessageFor(x => x.LastName)
<br />
@Html.TextBoxFor(x => x.Age) @Html.ValidationMessageFor(x => x.Age)
<br />
<input type=submit value="submit" />
<br /><br />
}
これはビュー モデル クラスです。
public class MyViewModel
{
[Required(ErrorMessage="Please enter first name") ]
public string Name { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public int Age { get; set; }
}
以下のスクリプトを使用して、フォームを Index アクション メソッドにポストします。
ReusableJqueryPost.prototype.CommonPost = function (formId) {
var fid = $("#" + formId);
var validated = $(fid).valid();
if (validated) {
$.ajax({
type: 'POST',
url: $(fid).attr('action'),
data: $(fid).serialize(),
accept: 'application/json',
error: function (xhr, status, error) {
alert('error: ' + xhr.responseText + '-' + error);
},
success: function (response) {
alert('DATA SAVED!');
var resp = response;
}
});
}
};
Index Action メソッドがActionResultとして返されるようになりました
return View(objMyViewModel);
または as またはJsonResult
return Json(objMyViewModel);
jquery ポストを使用しておらず、データを ActionResult として返す場合、クライアント側で何もする必要はありません。Asp.net MVC は、値を適切なテキスト ボックスにバインドします。@Html.TextBoxFor(....)
jquery ポストを使用してアクション メソッドにポストし、データをJsonResultHtml.TextBoxFor(...)
として返すため、jquery を使用してテキスト ボックスまたは選択ボックスを見つけるのではなく、json 文字列の各要素をそれぞれのテキスト ボックスに自動バインドするという同じ柔軟性が必要です。 (存在する場合) を作成し、json 文字列で受け取った値に基づいてデータをバインドします。
質問
- これは、すぐに使用できるasp.net mvcの一部の機能で可能ですか?
- jqueryを使用してテキストボックスまたはドロップダウンまたはその他の入力要素を名前/ IDで検索し、json文字列から値を割り当てる唯一のオプションです
- ビューごとにプロジェクト全体で繰り返さずに同じコードを再利用できるように、この割り当てを一度記述する方法はありますか? プロジェクト全体で使用する jquery post メソッドが 1 つあるのと同じように。
ありがとう