0

在我的 MVC 4 Web 应用程序中,我有一个带有 jQ​​uery 选项卡表的模型数据,在每个选项卡中,我都有一些嵌入的表,它们与这个主选项卡表具有一对多的关系,在主选项卡表中,我有一个按钮( “添加”),当单击它时,它旁边的一行数据字段以及用户输入的数据将被添加到嵌入在其中一个选项卡表中的子表(这是一个部分视图)中,现在,按钮和控制器后面的代码将数据保存到表中,但当前嵌入的内容根本没有更新以显示新添加的表数据。我很感激任何人都可以帮助我解决这个问题。这是添加按钮后面的 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 和 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 表中。有人可以帮我解决这个问题吗?非常感谢。

4

2 回答 2

0
  fintravel = db.FINtravel.Find(product.FINtravelID);//
  return PartialView("_MealPartial", fintravel);
 solves the problem, thanks for all helps in this thread
于 2013-11-06T22:15:37.237 回答
0

您可以尝试像这样更改控制器代码:

public ActionResult Edit1( Meal product)
{

    db.Meals.Add(product);
    db.SaveChanges();  
    product = db.Meals.Find(product.MealID);//get saved product with filled property FINtravel
    ViewBag.SaveMeal = "1";
    return PartialView("_MealPartial", product.FINtravel);
}
于 2013-11-06T13:53:23.037 回答