在我的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表中。 任何人都可以帮助我解决这个问题吗?非常感谢。
答案 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