如何在这种情况下获取部分视图数据?

时间:2013-11-06 02:19:10

标签: javascript jquery asp.net-mvc razor

在我的MVC 4网页应用程序中,我有一个带有jQuery选项卡表的模型数据,在每个选项卡中,我有一些嵌入式表格与主要标签表的一对多关系,在主标签表中,我有一个按钮(“添加”),当点击它时,其旁边的一行数据字段与用户输入的数据将被添加到子表中(这是一个部分视图)嵌入其中一个选项卡表,现在,后面的代码按钮和控制器将数据保存到表中,但当前嵌入的数据库不会更新以显示新添加的表数据。我感谢任何人都可以帮我解决这个问题。 这是添加按钮后面的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控制器中创建的膳食数据不会显示在剃刀视图(partialview)中?但我可以看到数据从后端保存在SQL表中。 任何人都可以帮助我解决这个问题吗?非常感谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

  fintravel = db.FINtravel.Find(product.FINtravelID);//
  return PartialView("_MealPartial", fintravel);
 solves the problem, thanks for all helps in this thread
相关问题