私のMVC 4 Webアプリには、jQueryタブテーブルを含むモデルデータがあり、各タブには、このメインタブテーブルと1対多の関係として機能するいくつかの埋め込みテーブルがあり、メインタブテーブルにはボタンがあります( 「追加」)をクリックすると、ユーザーが入力したデータを含むデータフィールドの行が、タブテーブルの1つに埋め込まれた子テーブル(部分ビュー)に追加されます。ボタンとコントローラーの背後にあるコードデータをテーブルに保存しましたが、現在の埋め込みは更新されず、新しく追加されたテーブル データがまったく表示されません。誰でもこの問題を解決できることに感謝します。これは、[追加] ボタンの背後にある JavaScript です。
function AddMeal() {
//Build your Product
var product = { "MDate": $("#MDate").val(), "MRegion": $("#MRegion").va(), "MBAmount": $("#MBAmount").val(),
"MLAmount": $("#MLAmount").val(), "MDAmount": $("#MDAmount").val(), "FINtravelID": $("#FINtravelID").val() };
$.post('@Url.Action("Edit1","Travel")', product, function (data) {
if (data == null) {
location = location.href;
}
else {
//Populate your MealTable element with the results of your Partial View
$('#MealTable').html(data);
}
});}
これはコントローラーです:
[HttpPost]
public ActionResult Edit1( Meal product)
{
db.Meals.Add(product);
db.SaveChanges();
ViewBag.SaveMeal = "1";
return PartialView("_MealPartial", product);
}
これは、この質問に関連するカミソリ ビューです。
@model Travelmvc.Models.FINtravel
<input type="button" value="Add" id="AddButton1" onclick="AddMeal()"/>
<div id="MealPartial">
@Html.Partial("~/Views/Shared/_MealPartial.cshtml")
</div>
これは部分ビューの詳細コードです:
@model Travelmvc.Models.FINtravel
<table class="MealT" id="MealTable" >
@if (Model != null) {
if (Model.Meals != null){ //here this line code always returns null, that is why the
read data created in SQL table can not display in the loop
foreach (var item in Model.Meals)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.MDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.MRegion)
</td>
<td>
@Html.DisplayFor(modelItem => item.MBAmount)
</td>
<td>
@Html.DisplayFor(modelItem => item.MLAmount)
</td>
<td>
@Html.DisplayFor(modelItem => item.MDAmount)
</td>
<td>
@Html.DisplayFor(modelItem => item.MTAmount)
</td>
<td>
@Html.DisplayFor(modelItem => item.MProduct)
</td>
<td>
@Html.DisplayFor(modelItem => item.MRC)
</td>
<td>
@Html.DisplayFor(modelItem => item.MLocation)
</td>
<td>
@Html.DisplayFor(modelItem => item.MPOC)
</td>
<td>
aa
</td>
<td>
ff
</td>
</tr>
}
...
これがFINtravel and Mealのモデルです。
public class FINtravel
{
public int FINtravelID { get; set; }
public string ClaimNo { get; set; }
public virtual ICollection<Meal> Meals { get; set; }
}
public class Meal
{
public int MealID { get; set; }
public int FINtravelID { get; set; }
public virtual FINtravel FINtravel { get; set; }
}
私の質問は、Edit1 コントローラーで作成された食事データがカミソリ ビュー (部分ビュー) に表示されないのはなぜですか? しかし、データがバックエンドから SQL テーブルに保存されていることがわかります。誰でもこの問題から私を助けることができますか? よろしくお願いします。