C# MVC-ActionLink-参数字典包含参数';id';不可为空的类型

C# MVC-ActionLink-参数字典包含参数';id';不可为空的类型,c#,model-view-controller,C#,Model View Controller,我在将视图中的ID与控制器匹配时遇到问题 当用户选择edit时,它将指向一个编辑页面,所选行的ID将传递给控制器,但是它会出现错误,即“参数字典包含非null类型的参数'ID'的null条目”,即使我尝试硬编码“ID=#”,它仍然计为null 我的看法是: @model Mvc4_Development_Test.Models.Customer.CustomerDTO @using Mvc4_Development_Test.Models.Customer @{ ViewBag.Tit

我在将视图中的ID与控制器匹配时遇到问题

当用户选择edit时,它将指向一个编辑页面,所选行的ID将传递给控制器,但是它会出现错误,即“参数字典包含非null类型的参数'ID'的null条目”,即使我尝试硬编码“ID=#”,它仍然计为null

我的看法是:

@model Mvc4_Development_Test.Models.Customer.CustomerDTO
@using Mvc4_Development_Test.Models.Customer

@{
    ViewBag.Title = "Customers Index";
    Mvc4_Development_Test.Models.Customer.CustomerListBO tblHeader = Model.CustomerList.FirstOrDefault( );
}

<h2 style="text-align:center">Customers Index</h2>

<br />

@using ( Html.BeginForm( "ViewCustomer" , "Customer" , FormMethod.Get , new { id = "fm_SearchFilter" } ) )

{
    <fieldset style="margin-left: 110px;">
        <div class="editor-label">
            @Html.LabelFor( model => model.searchFunction.Customer_Name )
        </div>
        <div class="editor-field">
            @Html.EditorFor( model => model.searchFunction.Customer_Name )


            @Html.DropDownListFor( model => model.searchFunction.Stat_ID , new SelectList( Model.StatList , "Stat_ID" , "Stat_Desc" , Model.searchFunction.Stat_ID ) )

            <input type="submit" value="Search" style="margin-left: 10px;" />
            <a href="./CreateCustomer"><input type="button" value="Create Customer" /></a>
        </div>
    </fieldset>
}
@*Display Table Data*@
<table style="margin-left: auto; margin-right: auto; background-color: white; font-weight: 500;">
    <tr>
        @*Display Table Header Names*@
        <th>@Html.DisplayNameFor( m => tblHeader.Customer_Name )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Customer_School )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Customer_Email )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Service_Name )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Customer_RegDate )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Staff_Name )</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Stat_ID )</th>
        <th>Options</th>
        <th>@Html.DisplayNameFor( m => tblHeader.Date_Edited )</th>
    </tr>

    @* Display a table of Customers *@
    @foreach ( Mvc4_Development_Test.Models.Customer.CustomerListBO member in Model.CustomerList )
    {
        <tr>
            @*Customers Title and Name*@
            <td>
                @Html.DisplayFor( modelItem => member.Title_Desc )
                @Html.DisplayFor( modelItem => member.Customer_Name )
            </td>
            @*Customers School Choice*@
            <td>
                @Html.DisplayFor( modelItem => member.Customer_School )
            </td>
            @*Customers Email Address*@
            <td>
                @Html.DisplayFor( modelItem => member.Customer_Email )
            </td>
            @*Display List of Customer Services*@
            <td>
                <ul style="list-style: none;">
                    @for ( var x = 0; x < member.GetCustomerServiceList.Count; x++ )
                    {
                        <li>@Html.DisplayFor( modelItem => member.GetCustomerServiceList [ x ].Service_Name )</li>
                    }
                </ul>
            </td>
            @*Customer Registration Dates*@
            <td>
                @Html.DisplayFor( modelItem => member.Customer_RegDate )
            </td>
            @*Contacting Staff Member*@
            <td>
                @Html.DisplayFor( modelItem => member.Staff_Name )
                <br />
                @Html.DisplayFor( modelItem => member.Department_Name )
            </td>
            @*Customers Status Description*@
            <td>
                @Html.DisplayFor( modelItem => member.Stat_Desc )
            </td>
            @*Display Button Options*@
            <td>
                @*Customer Block/Unblock Button*@
                <button>
                    @Html.ActionLink( ( member.Stat_ID == ( int )Status.Active ) ? "Block" : "Unblock" , "CustomerStatus" , "Customer" , new { id = member.Customer_ID , status = @member.Stat_ID } , null )
                </button>
                @*Customer Edit Button*@
                <button>
                    @Html.ActionLink( "Edit" , "EditCustomer" , "Customer" , new { id = member.Customer_ID } )
                </button>
                @*Customer Delete Button*@
                <button>
                    @Html.ActionLink( "Deleted" , "CustomerStatus" , "Customer" , new { id = @member.Customer_ID , status = ( int )Status.Deleted } , null )
                </button>
            </td>
            <td>
                @Html.DisplayFor( modelItem => member.Date_Edited )
            </td>
        </tr>
    }
</table>
我的模型

public int Customer_ID { get; set; }

public string Customer_Name { get; set; }

public string Customer_School { get; set; }
我不能将其作为可空字段,因为它是数据库上的ID


非常感谢您的帮助。

我通过在valueObject旁边添加一个null找到了答案,即:

<button>
@Html.ActionLink( "Edit" , "EditCustomer" , "Customer" , new { id = member.Customer_ID }, null )
</button>

@ActionLink(“编辑”、“编辑客户”、“客户”,新的{id=member.Customer\u id},空)

生成的地址看起来正常吗?对不起,你的意思是什么?呈现的ActionLink的地址。呈现的ActionLink转到EditCustomer、Customer(Controller),我希望它使用Customer\u ID作为ID变量setRight,但发布呈现的链接。
<button>
@Html.ActionLink( "Edit" , "EditCustomer" , "Customer" , new { id = member.Customer_ID }, null )
</button>