在可编辑WebGrid MVC中保存时将Id从模型传递到JSON查询

在可编辑WebGrid MVC中保存时将Id从模型传递到JSON查询,json,asp.net-mvc-5,webgrid,Json,Asp.net Mvc 5,Webgrid,我是MVC新手,所以如果我使用的术语不正确,请纠正我 我有一个WebGrid,它是可编辑的,保存得很好,但是我想从模型中传递一个iD,而不必在WebGrid上显示这个iD。在本例中,它是FKIProjectd。这是我的密码: 控制器中的操作: public JsonResult ChangePipeline(PipelineDetails model) { ProjectManager PM = new ProjectManager(); //U

我是MVC新手,所以如果我使用的术语不正确,请纠正我

我有一个WebGrid,它是可编辑的,保存得很好,但是我想从模型中传递一个iD,而不必在WebGrid上显示这个iD。在本例中,它是FKIProjectd。这是我的密码:

控制器中的操作:

    public JsonResult ChangePipeline(PipelineDetails model)
    {
        ProjectManager PM = new ProjectManager();

        //Update model to DB
        PM.UpdatePipeline(model.pkiPipeline, model.fkiProjectID, model);

        var redirectURL = new UrlHelper(Request.RequestContext).Action("Index", "Pipeline", new { id = model.fkiProjectID});

        return Json(new { Url = redirectURL });
    }
视图中的WebGrid:

@model AirFlo_Size_Programme.Models.PipelineViewModel

@{
    ViewBag.Title = "Pipe Line";
    Layout = "~/Views/Shared/_Layout_ProjectFlow.cshtml";
    var grid = new WebGrid(Model.PipelineListmodel, canPage: true, rowsPerPage: 7);
}

<div id="gridContent" style="font-family: Arial; padding: 20px;" class="col-md-12">
    @grid.GetHtml(tableStyle: "webgrid-table",
    headerStyle: "webgrid-header",
    footerStyle: "webgrid-footer",
    alternatingRowStyle: "webgrid-alternating-row",
    selectedRowStyle: "webgrid-selected-row",
    rowStyle: "webgrid-row-style",
    mode: WebGridPagerModes.All,
    columns:
        grid.Columns(
         grid.Column("pkiPipeline", "Node Nr.", format: @<text>  <span class="display-mode">@item.pkiPipeline </span> <label id="pkiPipeline" class="edit-mode">@item.pkiPipeline</label> </text>, style: "col1Width"),
         grid.Column("Accumulated_Length", "Accumulated Length", format: @<text>  <span class="display-mode"> <label id="lblAccumulated_Length">@item.Accumulated_Length</label> </span> <input type="text" id="Accumulated_Length" value="@item.Accumulated_Length" class="edit-mode" /></text>, style: "col2Width"),
         grid.Column("Elevation", "Elevation", format: @<text> <span class="display-mode"> <label id="lblElevation">@item.Elevation</label> </span>  <input type="text" id="Elevation" value="@item.Elevation" class="edit-mode" /> </text>, style: "col2Width"),
         grid.Column("Pipe_Outside_Diameter", "Pipe Outside Diameter", format: @<text> <span class="display-mode"> <label id="lblPipe_Outside_Diameter">@item.Pipe_Outside_Diameter</label> </span>  <input type="text" id="Pipe_Outside_Diameter" value="@item.Pipe_Outside_Diameter" class="edit-mode" /> </text>, style: "col2Width"),
         grid.Column("Wall_Thickness", "Wall Thickness", format: @<text> <span class="display-mode"> <label id="lblWall_Thickness">@item.Wall_Thickness</label> </span>  <input type="text" id="Wall_Thickness" value="@item.Wall_Thickness" class="edit-mode" /> </text>, style: "col2Width"),
         grid.Column("Control_Point_Description", "Control Point Description", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Description">@item.Control_Point_Description</label> </span>  <input type="text" id="Control_Point_Description" value="@item.Control_Point_Description" class="edit-mode" /> </text>, style: "col2Width"),
         grid.Column("Control_Point_Size", "Control Point Size", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Size">@item.Control_Point_Size</label> </span>  <input type="text" id="Control_Point_Size" value="@item.Control_Point_Size" class="edit-mode" /> </text>, style: "col2Width"),
         grid.Column("fkiProjectID", "ProjectID", format: @<text>  <span class="display-mode">@item.fkiProjectID </span> <label id="fkiProjectID" class="edit-mode">@item.fkiProjectID</label> </text>, style: "col1Width"),
         grid.Column("Action", format: @<text>
                <button class="edit-user display-mode">Edit</button>
                <button class="save-user edit-mode">Save</button>
                <button class="cancel-user edit-mode">Cancel</button>
        </text>, style: "col3Width", canSort: false)
       ))
</div>
@model airlo\u Size\u program.Models.PipelineViewModel
@{
ViewBag.Title=“管道”;
Layout=“~/Views/Shared/\u Layout\u ProjectFlow.cshtml”;
var grid=new WebGrid(Model.PipelineListmodel,canPage:true,rowsPerPage:7);
}
@GetHtml(表样式:“webgrid表”,
标题样式:“webgrid标题”,
页脚样式:“webgrid页脚”,
交替行样式:“webgrid交替行”,
selectedRowStyle:“webgrid选定行”,
行样式:“webgrid行样式”,
模式:WebGridPagerModes.All,
柱:
网格.列(
grid.Column(“pkippeline”,“节点编号”,格式:@@item.pkippeline@item.pkippeline,样式:“col1Width”),
grid.Column(“累计长度”、“累计长度”,格式:@@item.cumulated\u Length,样式:“col2Width”),
网格.列(“立面”、“立面”,格式:@@item.Elevation,样式:“col2Width”),
网格栏(“管道外径”,“管道外径”,格式:@@item.Pipe\u外径,样式:“col2Width”),
网格栏(“壁厚”、“壁厚”,格式:@@item.Wall\u Thickness,样式:“col2Width”),
grid.Column(“控制点描述”,“控制点描述”,格式:@@item.Control\u Point\u描述,样式:“col2Width”),
grid.Column(“控制点大小”,“控制点大小”,格式:@@item.Control\u Point\u Size,样式:“col2Width”),
grid.Column(“fkiprojectd”,“projectd”,格式:@@item.fkiprojectd@item.fkiprojectd,样式:“col1Width”),
网格.列(“操作”,格式:@
编辑
拯救
取消
,样式:“col3Width”,canSort:false)
))
JSON:

@section scripts
{
    <script>

        $(function () {
            $('.edit-mode').hide();
            $('.edit-user, .cancel-user').on('click', function () {
                var tr = $(this).parents('tr:first');
                tr.find('.edit-mode, .display-mode').toggle();
            });

            $('.save-user').on('click', function () {
                var tr = $(this).parents('tr:first');
                var PLID = tr.find("#pkiPipeline").html();
                var PLAccumulated_Length = tr.find("#Accumulated_Length").val();
                var PLElevation = tr.find("#Elevation").val();
                var PLPipe_Outside_Diameter = tr.find("#Pipe_Outside_Diameter").val();
                var PLWall_Thickness = tr.find("#Wall_Thickness").val();
                var PLControl_Point_Description = tr.find("#Control_Point_Description").val();
                var PLControl_Point_Size = tr.find("#Control_Point_Size").val();
                var PLProjectID = tr.find("#fkiProjectID").html();

                var PipelineViewModel =
                {
                    "pkiPipeline": PLID,
                    "Accumulated_Length": PLAccumulated_Length,
                    "Elevation": PLElevation,
                    "Pipe_Outside_Diameter": PLPipe_Outside_Diameter,
                    "Wall_Thickness": PLWall_Thickness,
                    "Control_Point_Description": PLControl_Point_Description,
                    "Control_Point_Size": PLControl_Point_Size,
                    "fkiProjectID": PLProjectID
                };
                $.ajax({
                    url: '/Pipeline/ChangePipeline/',
                    data: JSON.stringify(PipelineViewModel),
                    type: 'POST',
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {
                        tr.find('.edit-mode, .display-mode').toggle();
                        alert('Record updated Successfully!!');
                        window.location.href = data.Url;
                    }
                });
                return false;
            });
            $('.edit-user').on('click', function () {
                var tr = $(this).parents('tr:first');
                var PLID = tr.find("#pkiPipeline").html();
                var PLAccumulated_Length = tr.find("#Accumulated_Length").val();
                var PLElevation = tr.find("#Elevation").val();
                var PLPipe_Outside_Diameter = tr.find("#Pipe_Outside_Diameter").val();
                var PLWall_Thickness = tr.find("#Wall_Thickness").val();
                var PLControl_Point_Description = tr.find("#Control_Point_Description").val();
                var PLControl_Point_Size = tr.find("#Control_Point_Size").val();
                var PLProjectID = tr.find("#pkiPipeline").html();

                tr.find("#lblAccumulated_Length").text(PLAccumulated_Length);
                tr.find("#lblElevation").text(PLElevation);
                tr.find("#lblPipe_Outside_Diameter").text(PLPipe_Outside_Diameter);
                tr.find("#lblWall_Thickness").text(PLWall_Thickness);
                tr.find("#lblControl_Point_Description").text(PLControl_Point_Description);
                tr.find("#lblControl_Point_Size").text(PLControl_Point_Size);
            });
        })
    </script>
}
@节脚本
{
$(函数(){
$('.edit mode').hide();
$('.edit user、.cancel user')。在('单击',函数()上{
var tr=$(this.parents('tr:first');
tr.find('.edit mode,.display mode').toggle();
});
$('.save user')。在('click',函数(){
var tr=$(this.parents('tr:first');
var PLID=tr.find(“#pkippeline”).html();
var plactedcumulated_Length=tr.find(“#cumulated_Length”).val();
var PLElevation=tr.find(#Elevation”).val();
var PLPipe_外径=tr.find(“#Pipe_外径”).val();
var PLWall_Thickness=tr.find(“#Wall_Thickness”).val();
var PLControl_Point_Description=tr.find(“#Control_Point_Description”).val();
var PLControl_Point_Size=tr.find(“#Control_Point_Size”).val();
var plprojectd=tr.find(#fkiprojectd”).html();
var PipelineViewModel=
{
“PKI管道”:PLID,
“累计长度”:累计长度,
“立面”:褶皱,
“管道外径”:管道外径,
“壁厚”:PLWall_厚度,
“控制点描述”:PLC控制点描述,
“控制点大小”:PLControl点大小,
“FKIProjectd”:PLProjectd
};
$.ajax({
url:“/Pipeline/changepippeline/”,
数据:JSON.stringify(PipelineViewModel),
键入:“POST”,
contentType:'application/json;charset=utf-8',
成功:功能(数据){
tr.find('.edit mode,.display mode').toggle();
警报('记录更新成功!!');
window.location.href=data.Url;
}
});
返回false;
});
$('.edit user')。在('click',函数(){
var tr=$(this.parents('tr:first');
var PLID=tr.find(“#pkippeline”).html();
var plactedcumulated_Length=tr.find(“#cumulated_Length”).val();
var PLElevation=tr.find(#Elevation”).val();
var PLPipe_外径=tr.find(“#Pipe_外径”).val();
var PLWall_Thickness=tr.find(“#Wall_Thickness”).val();
var PLControl_Point_Description=tr.find(“#Control_Point_Description”).val();
var PLControl_Point_Size=tr.find(“#Control_Point_Size”).val();
var PLProjectID=tr.find(#pkippeline”).html();
tr.find(“#lblAccumulated_Length”).text(plactcumulated_Length);
tr.find(“#lbleevation”).text(PLElevation);
tr.find(“#lblPipe_外径”).text(PLPipe_外径);
tr.find(“#lblWall_厚度”).text(PLWall_厚度);
tr.find(“#lblControl_Point_Description”).text(PLControl_Point_Description);
tr.find(“#lblControl_Point_Size”).text(PLControl_Point_Size);
});
})
}
只是重申一下我想要的,FKIProjection是模型的一部分,我能将它传递到JSON查询的唯一方法是将它添加到WebGrid,这是我不想要的。我希望它被传递到我的JSON,JSON通过我的模型发送到我的控制器,而不将它添加到WebGrid


提前感谢您的帮助。

将FKIProjection作为隐藏输入添加到操作列(并删除其列):


将FKIProjectd添加到动作colu
<div id="gridContent" style="font-family: Arial; padding: 20px;" class="col-md-12">
    @grid.GetHtml(
    @*** options ***@,
    columns:
        grid.Columns(
         @*** other columns ***@
         grid.Column("Action", format: @<text>
                <input type="hidden" class="fkiProjectID" value="@item.fkiProjectID" />
                <button class="edit-user display-mode">Edit</button>
                <button class="save-user edit-mode">Save</button>
                <button class="cancel-user edit-mode">Cancel</button>
        </text>, style: "col3Width", canSort: false)
       ))
</div>
var PLProjectID = tr.find(".fkiProjectID").val();