Asp.net mvc Telerik网格未更新

Asp.net mvc Telerik网格未更新,asp.net-mvc,telerik-grid,telerik-mvc,Asp.net Mvc,Telerik Grid,Telerik Mvc,我正在尝试使用Ajax绑定创建一个主/细节Telerik MVC网格。当我选择要更新的详细信息行时,单击“编辑”,编辑该值,然后单击“更新”,该值不会在客户端更新。我在调试器中看到,当我调用TryUpdateModel时,模型没有更新。以下是视图: @(Html.Telerik().Grid<FeeSrcMstrDteViewModel>() .Name("FeeSourceConfirmMasterGrid") .Columns(columns => {

我正在尝试使用Ajax绑定创建一个主/细节Telerik MVC网格。当我选择要更新的详细信息行时,单击“编辑”,编辑该值,然后单击“更新”,该值不会在客户端更新。我在调试器中看到,当我调用TryUpdateModel时,模型没有更新。以下是视图:

@(Html.Telerik().Grid<FeeSrcMstrDteViewModel>()
.Name("FeeSourceConfirmMasterGrid")
.Columns(columns =>
    {
        columns.Bound(m => m.FEE_SRC_NME).Width(65).Title(@FeeBuilderResource.FeeSourceName);
        columns.Bound(m => m.PUBLISHING_ENTITY_NME).Width(45).Title(@FeeBuilderResource.PublishingEntity);
        columns.Bound(m => m.FEE_SRC_SRVC_CATEGORY_NME).Width(55).Title(@FeeBuilderResource.ServiceTypeCategory);
        columns.Bound(m => m.FEE_SRC_PUBLISHED_DTE).Width(45).Title(@FeeBuilderResource.PublishedDate).Format("{0:d}");
        columns.Bound(m => m.YEAR).Width(30).Title(@FeeBuilderResource.Year);
        if (Model.FeeSourceMasterDate.GEO_LOC_ID == 1 || Model.FeeSourceMasterDate.GEO_LOC_ID == 4)
        {
            columns.Bound(m => m.STATE).Width(50).Title("State or carrier locality");
        }
        else
        {
            columns.Bound(m => m.CARRLOC).Width(50).Title("State or carrier locality");
        }
        //columns.Command(commands => commands.Custom("ExportToExcel").Text("Export to Excel")
            //.DataRouteValues(route => route.Add(m => m.FeeSourceMasterDate.FEE_SRC_MSTR_ID).RouteKey("FEE_SRC_MSTR_ID"))
            //.Ajax(false).Action("_ConfirmMasterExportXlsAjax", "FeeSrcFlatRate", new { feeSourceServiceMasterDateId = "<#= FEE_SRC_MSTR_ID #>" }))
            //.HtmlAttributes(new { style = "text-align: center" }).Width(50).Title(@FeeBuilderResource.Actions);
    })
    //.ClientEvents(events => events.OnSave("FeeSourceTestGrid_OnSave"))
    .DetailView(details => details.ClientTemplate(
        Html.Telerik().Grid<FeeSourceFlatRateCommentsViewModel>()
        .Name("FeeSourceHome_<#= FEE_SRC_MSTR_ID #>")
        .DataKeys(keys => keys.Add(m => m.CommentId))
        .DataBinding(dataBinding => dataBinding.Ajax()
            .Select("_GetFeeSourceDetailDataAjax", "FeeSrcFlatRate")
            .Update("_UpdateFeeSourceDetailDataAjax", "FeeSrcFlatRate")
            )
        .Columns(columns =>
        {
            columns.Bound(m => m.CommentId).Width(200).Hidden();
            columns.Bound(m => m.FeeSourceDescription).Width(200).Title("Fee source description");
            columns.Bound(m => m.FeeSourceComments).Width(200).Title("Fee source comments");
            columns.Command(commands =>
            {
                commands.Edit().ButtonType(GridButtonType.ImageAndText);
            }).Width(75);

        })
        .DataBinding(dataBinding => dataBinding.Ajax()
            .Select("_GetFeeSourceDetailDataAjax", "FeeSrcFlatRate", new { id = "<#= FEE_SRC_DTE_ID #>" }))
            .Editable(editing => editing.Mode(GridEditMode.InLine).InsertRowPosition(GridInsertRowPosition.Top))
            .Footer(false)
            .ToHtmlString()
            ))
.DataBinding(dataBinding => dataBinding.Ajax()
    .Select("_GetFeeSourceDataAjax", "FeeSrcFlatRate"))
    .Pageable(paging => paging.PageSize(20))
    //.Scrollable(scrolling => scrolling.Height(580))
    .Sortable()
)
@(Html.Telerik().Grid())
.Name(“FeeSourceConfirmMasterGrid”)
.列(列=>
{
columns.Bound(m=>m.FEE\u SRC\u NME).Width(65).Title(@FeeBuilderResource.FeeSourceName);
columns.Bound(m=>m.PUBLISHING\u ENTITY\u NME).Width(45).Title(@FeeBuilderResource.PublishingEntity);
columns.Bound(m=>m.FEE\u SRC\u SRVC\u CATEGORY\u NME).Width(55).Title(@FeeBuilderResource.ServiceTypeCategory);
columns.Bound(m=>m.FEE\u SRC\u PUBLISHED\u DTE).Width(45).Title(@FeeBuilderResource.PublishedDate).Format(“{0:d}”);
columns.Bound(m=>m.YEAR).Width(30).Title(@FeeBuilderResource.YEAR);
if(Model.FeeSourceMasterDate.GEO_LOC_ID==1 | | Model.FeeSourceMasterDate.GEO_LOC_ID==4)
{
columns.Bound(m=>m.STATE).宽度(50).标题(“状态或载体位置”);
}
其他的
{
列。绑定(m=>m.CARRLOC)。宽度(50)。标题(“状态或载体位置”);
}
//columns.Command(commands=>commands.Custom(“导出到Excel”).Text(“导出到Excel”)
//.DataRouteValues(route=>route.Add(m=>m.FeeSourceMasterDate.FEE\u SRC\u MSTR\u ID).RouteKey(“FEE\u SRC\u MSTR\u ID”))
//.Ajax(false).Action(“\u ConfirmMasterExportXlsAjax”,“feescFlatrate”,新的{feeSourceServiceMasterDateId=”“}))
//.HtmlAttributes(新的{style=“text align:center”}).Width(50).Title(@FeeBuilderResource.Actions);
})
//.ClientEvents(events=>events.OnSave(“FeeSourceTestGrid\u OnSave”))
.DetailView(details=>details.ClientTemplate(
Html.Telerik().Grid()
.Name(“FeeSourceHome”)
.DataKeys(keys=>keys.Add(m=>m.CommentId))
.DataBinding(DataBinding=>DataBinding.Ajax()
.选择(“\u GetFeeSourceDetailDataAjax”,“FeeScrafrate”)
.Update(“\u UpdateFeeSourceDetailDataAjax”,“feesrFlatrate”)
)
.列(列=>
{
columns.Bound(m=>m.CommentId).Width(200).Hidden();
columns.Bound(m=>m.FeeSourceDescription).Width(200).Title(“费用来源描述”);
columns.Bound(m=>m.FeeSourceComments).Width(200).Title(“费用来源注释”);
columns.Command(commands=>
{
commands.Edit().ButtonType(GridButtonType.ImageAndText);
}).宽度(75);
})
.DataBinding(DataBinding=>DataBinding.Ajax()
.Select(“\u GetFeeSourceDetailDataAjax”,“FeeScraflatate”,new{id=”“}))
.Editable(editing=>editing.Mode(GridEditMode.InLine).InsertRowPosition(GridInsertRowPosition.Top))
.Footer(假)
.ToHtmlString()
))
.DataBinding(DataBinding=>DataBinding.Ajax()
.选择(“\u GetFeeSourceDataAjax”,“feescrflatrate”))
.Pageable(分页=>分页.PageSize(20))
//.可滚动(滚动=>滚动高度(580))
.Sortable()
)
select方法非常有效,但update方法不行。当我在我的控制器中调用TryUpdateModel时,我希望模型会被更新,但我看不到这一点。这是我的控制器代码:

[HttpPost]
[GridAction]
public ActionResult _UpdateFeeSourceDetailDataAjax(int id)
{
    FeeSourceFlatRateViewModel modelTest = new FeeSourceFlatRateViewModel();           

    List<FeeSourceFlatRateCommentsViewModel> commentsList = new 

List<FeeSourceFlatRateCommentsViewModel>();

        // get the model by id
        IFeeSourceMstrRepository repo = new FeeSourceMstrRepository();

        IList<FeeSrcMstrDteViewModel> modelTestList = repo.GetFeeSrcMstrDteViewModel((int)id);
        FeeSrcMstrDteViewModel modelTestChange = modelTestList[0];

        //Perform model binding (fill the product properties and validate it).
        if (TryUpdateModel(modelTestChange))
        {
            var testy = modelTestChange;

            // set the comments
            FeeSourceFlatRateCommentsViewModel modelComments = new FeeSourceFlatRateCommentsViewModel
            {
                CommentId = id,
                FeeSourceDescription = modelTestChange.FEE_SRC_DESC,
                FeeSourceComments = modelTestChange.FEE_SRC_COMMENTS
            };

            commentsList.Add(modelTestChange);

            // save the object
            repo.SaveFeeSrcUOW(saveModel);
            OperationStatus opStatus = repo.Save();

        }

        TempData["FeeSourceFlatRateModel"] = modelTestChange;
        return View(new GridModel(commentsList));
    }
[HttpPost]
[行动]
public ActionResult\u UpdateFeeSourceDetailDataAjax(int id)
{
FeeSourceFlatRateViewModelTest=新的FeeSourceFlatRateViewModel();
列表注释列表=新建
List();
//通过id获取模型
IFeeSourceMstrRepository repo=new FeeSourceMstrRepository();
IList modelTestList=repo.GetFeeSrcMstrDteViewModel((int)id);
feesrcmstrdteviewModelTestChange=modelTestList[0];
//执行模型绑定(填写产品属性并进行验证)。
if(TryUpdateModel(modelTestChange))
{
var testy=modelTestChange;
//设置注释
FeeSourceFlatRateCommentsViewModelComments=新的FeeSourceFlatRateCommentsViewModel
{
注释id=id,
FeeSourceDescription=modelTestChange.FEE\u SRC\u DESC,
FeeSourceComments=modelTestChange.FEE\u SRC\u COMMENTS
};
添加(modelTestChange);
//保存对象
repo.savefeescruow(saveModel);
OperationStatus opStatus=repo.Save();
}
TempData[“FeeSourceFlatRateModel”]=modelTestChange;
返回视图(新GridModel(commentsList));
}

我错过了什么?谢谢你的帮助

我从Telerik网站得到了一些帮助。事实证明,我试图更新错误的模型。我的主网格绑定到FeeSrcMstrDteViewModel,但我要更新的详细网格绑定到feessourceflatratecommentsviewmodel

修复方法是在FeeSourceFlatRateCommentsViewModel上调用TryUpdateModel