C# MVC-ActionLink-参数字典包含参数';id';不可为空的类型
我在将视图中的ID与控制器匹配时遇到问题 当用户选择edit时,它将指向一个编辑页面,所选行的ID将传递给控制器,但是它会出现错误,即“参数字典包含非null类型的参数'ID'的null条目”,即使我尝试硬编码“ID=#”,它仍然计为null 我的看法是: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
@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>