Asp.net mvc 4 用于selectedValue的MVC 4 WebGrid DropDownList

Asp.net mvc 4 用于selectedValue的MVC 4 WebGrid DropDownList,asp.net-mvc-4,webgrid,dropdownlistfor,Asp.net Mvc 4,Webgrid,Dropdownlistfor,我在局部视图中有一个web网格。每列都有一个显示和编辑模式。显示模式使用标签显示数据。当用户选择“编辑”时,显示模式被隐藏,编辑模式被显示。除了第二列DropDownList for中的“selectValue:”之外,一切都正常。DDLF显示selectlist,但从第一个值开始,而不是使用selectedValue。我已经尝试了我能想到的每一种变化。有什么想法吗?谢谢你看这个 @model ANet.Areas.IMS.Models.DVModel @using System.Web.Hel

我在局部视图中有一个web网格。每列都有一个显示和编辑模式。显示模式使用标签显示数据。当用户选择“编辑”时,显示模式被隐藏,编辑模式被显示。除了第二列DropDownList for中的“selectValue:”之外,一切都正常。DDLF显示selectlist,但从第一个值开始,而不是使用selectedValue。我已经尝试了我能想到的每一种变化。有什么想法吗?谢谢你看这个

@model ANet.Areas.IMS.Models.DVModel
@using System.Web.Helpers

@{var grid = new WebGrid(Model.DMRN);}    

<div  id="gridMRN" style=" padding:20px; " >
@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("PK_ID", "MRN ID", format: @<text><span class="display-mode">@item.PK_ID</span><label id="lblPK_ID" class="edit-mode">@item.PK_ID</label><input type="hidden" name="PK_ID" id="PK_ID" value="@item.PK_ID" /><input type="hidden" name="fk_ID" id="fk_ID" value="@item.fk_ID" /> </text>),
            grid.Column("fk_MFID", "MF", format: @<text><span class="display-mode"><label id="lblfk_MFID">@item.v_L_MF.MFN</label></span>@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" })</text>, style: "webgrid-col1Width"),
            grid.Column("MRN", "MRN", format: @<text>  <span  class="display-mode"><label id="lblMRN">@item.MRN</label></span><input type="text" id="MRN" value="@item.MRN" class="edit-mode" /></text>, style: "webgrid-col3Width"),                
            grid.Column("Action", format: @<text>
                            <button class="edit-MRN display-mode" >Edit</button>
                            <button class="save-MRN edit-mode"  >Save</button>
                            <button class="cancel-MRN edit-mode" >Cancel</button>
                        </text>,  style: "webgrid-col3Width" , canSort: false)))
</div>

<script type="text/javascript" >
$(function () {
    $('thead tr th:nth-child(1), tbody tr td:nth-child(1)').hide();
    $('.edit-mode').hide();
    $('.edit-MRN, .cancel-MRN').on('click', function () {
        var tr = $(this).parents('tr:first');
        tr.find('.edit-mode, .display-mode').toggle();
        $("#MRNAddFrm").toggle();
    });

    $('.save-MRN').on('click', function () {
        var tr = $(this).parents('tr:first');
        var PK_ID = tr.find("#PK_ID").val();
        var fk_ID = tr.find("#fk_ID").val();
        var fk_MFID = tr.find("#fk_MFID").val();
        var MRN = tr.find("#MRN").val();
        tr.find("#lblPK_ID").text(PK_ID);
        tr.find("#lblfk_ID").text(fk_ID);
        tr.find("#lblfk_MFID").text(fk_MFID);
        tr.find("#lblMRN").text(MRN);
        tr.find('.edit-mode, .display-mode').toggle();
        var MRM =
        {
            "PK_ID": PK_ID,
            "fk_ID": fk_ID,
            "fk_MFID": fk_MFID,
            "MRN": MRN
        };
        $.ajax({
            url: '/IMS/EditMRN/',
            datatype: 'json',
            data: JSON.stringify(MRN),
            type: 'POST',
            contentType: 'application/json; charset=utf-8'
        })

        .success(function (data) {
            $('#gridMRN').replaceWith(data);
        });

        $("#MRNAddFrm").toggle();
    });
})
</script>

您的DropDownlist用于呼叫将解决此问题。 请让我们检查以下内容。 您应该在dropdownlist级别提供默认值,而不是选择列表级别

我记不清真正的电话号码了,但应该试试这样:

@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" }, "Default value")

您可以显示视图模型的定义吗?
ANet.Areas.IMS.Models.DVModel
。这是视图模型:我注意到您正在将选择列表中的选定值设置为
item.fk_MFID
,什么是
item
?我相信它指的是那行数据。我还尝试了Model.DMRN.fk_MFID和DMRN.fk_MFID,但都不起作用。它还与该列上的标签一起使用,该列按预期显示。谢谢,我会尝试一下,并让您知道我发现了什么。
private DVModel GetDVModel(int id)
    {
        var _viewModel = new DVModel
        {
            .... other lists
            v_L_MF = unitOfWork.MFRepository.Get().OrderBy(o => o.MFN),

            .... other lookup lists
            L_MF = new SelectList(unitOfWork.MFRepository.Get().OrderBy(o => o.MFN), "PK_MFID", "MFN", String.Empty),

        };

        return _viewModel;
    }
@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" }, "Default value")