ASP.NET MVC3EFコードファーストをRazor+SQLserverで使用しており、CRUD操作でマスター詳細シナリオ(注文、注文ラインなど)を実装したいと考えています。http://hasibulhaque.com/index.php/2011/master-detail-crud-operations-ef-asp-net-mvc-3/のようなオンラインの例に出くわしましたが、それらはJQueryやその他の複雑な実装に大きく依存しています。誰かが私にクリーンなコードで段階的なアプローチを提案できますか?
2 に答える
asp.netサイトには優れたチュートリアルがあります。そして私はあなたがmvc4学習に切り替えることをお勧めします。ここにリンクがあります: http ://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
足場が必要な場合は、残念ながらそれは不可能であり、単純に行うことはできません。さらに、必要なものを実装するには、jquery と ajax を使用する必要があります。
あなたにとって最善かつ最も簡単な方法は、フォームを作成するためのビューがあり、その下部に FormFields を割り当てるためのフィールドセットを配置することだと思います。
フィールドセットには、作成用と編集用の 2 つの部分ビューが必要です。作成の部分ビューは次のようになります。
@model myPrj.Models.Form_FormFieldInfo
@{
var index = Guid.NewGuid().ToString();
string ln = (string)ViewBag.ListName;
string hn = ln + ".Index";
}
<tr>
<td>
<input type="hidden" name="@hn" value="@index" />
@Html.LabelFor(model => model.FormFieldID)
</td>
<td>
@Html.DropDownList(ln + "[" + index + "].FormFieldID",
new SelectList(new myPrj.Models.DbContext().FormFields, "ID", "FieldName"))
</td>
<td>
<input type="button" onclick="$(this).parent().parent().remove();"
value="Remove" />
</td>
</tr>
create place ビューでこの部分ビューを ajaxly で呼び出すことにより、タグごとにいくつかの要素をレンダリングできます。要素の各行には、ラベル、タグを含む DropDownList、および作成された要素を単純に削除するための削除ボタンが含まれています。
create place ビューには、部分ビューで作成した要素を含む裸のテーブルがあります。
<fieldset>
<legend>Form and FormFields</legend>
@Html.ValidationMessageFor(model => model.FormFields)</label>
<table id="tblFields"></table>
<input type="button" id="btnAddTag" value="Add new Field"/>
<img id="imgSpinnerl" src="~/Images/indicator-blue.gif" style="display:none;" />
</fieldset>
また、各タグの要素の行を作成する次のスクリプトがあります。
$(document).ready(function () {
$("#btnAddField").click(function () {
$.ajax({
url: "/Controller/GetFormFieldRow/FormFields",
type: 'GET', dataType: 'json',
success: function (data, textStatus, jqXHR) {
$("#tblFields").append(jqXHR.responseText);
},
error: function (jqXHR, textStatus, errorThrown) {
$("#tblFields").append(jqXHR.responseText);
},
beforeSend: function () { $("#imgSpinnerl").show(); },
complete: function () { $("#imgSpinnerl").hide(); }
});
});
});
アクション メソッド GetFormFieldRow は次のようになります。
public PartialViewResult GetFormFieldRow(string id = "")
{
ViewBag.ListName = id;
return PartialView("_FormFieldPartial");
}
作成は完了です...質問のソリューション全体には、ビュー、部分ビュー、コントローラー、ajax呼び出し、およびモデルバインディング用の多くのコードがあります。この回答にすべてを投稿することは本当にできないので、私はあなたに道を示しようとしました。
ここに完全な情報と方法があります。
この回答がお役に立てば幸いです。