【发布时间】:2019-11-17 09:52:17
【问题描述】:
参数字典包含参数 'membershipTypeId' 的 null 条目,该参数是不可为空的类型 'System.Int32',用于方法 'System.Web.Mvc.ActionResult CustomerForm(Int32, System.String, Boolean, Int32)' in ' WebApplication2.Controllers.CustomerController'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数
我的客户类与membershipType 类具有多对一关系:
public class Customer
{
public Customer()
{
this.Movies = new HashSet<Movie>();
}
public int id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
public bool IsSubscribedToNewsletter { get; set; }
public int CurrentMembershipTypeId { get; set; }
public MembershipType CurrentMembershipType { get; set;}
public ICollection<Movie> Movies { get; set; }
}
我的 MembershipType 类:
public class MembershipType
{
public int Id { get; set; }
public short SignupFee { get; set; }
public byte DurationInMonths { get; set; }
public byte DiscountRate { get; set; }
public ICollection<Customer> Customers { get; set; }
// public virtual ICollection<Movie> Movie { get; set; }
}
我的客户控制器: 获取客户表单的功能:
public ActionResult CustomerForm(Customer customer)
{
var membershipTypes = iMembershipTypeRepository.GetMembershipTypes();
ViewBag.Message = "Customers form is going to display: ";
if (customer.IsSubscribedToNewsletter != true)
ViewBag.Addon = "Selected";
else
ViewBag.Addon = "Not Selected";
return View(membershipTypes);
}
客户表单的发布操作:
[HttpPost]
public ActionResult CustomerForm(int CustomerId, string CustomerName, bool CustomerisSubscribedToNewsLetter, int membershipTypeId)
{
Customer customer = new Customer();
customer.id = CustomerId;
customer.Name = CustomerName;
customer.IsSubscribedToNewsletter = CustomerisSubscribedToNewsLetter;
customer.CurrentMembershipTypeId = membershipTypeId;
iCustomerRepository.InsertCustomer(customer);
iCustomerRepository.Save();
return RedirectToAction("Customer");
}
客户窗体视图:
<h2>CustomerForm</h2>
<form action="/Customer/CustomerForm" method="post">
<table>
<tr>
<td>Id:</td>
<td><input id="CustomerId" type="text" name="CustomerId" /></td>
</tr>
<tr>
<td>Name:</td>
<td><input id="CustomerName" type="text" name="CustomerName" /></td>
</tr>
<tr>
<td>IsSubscribedToNewLetter:</td>
<td><input id="CustomerisSubscribedToNewsLetter" type="text" name="CustomerisSubscribedToNewsLetter" /></td>
</tr>
<tr>
<td>MembershipType:</td>
<td>
<select id="MembershipTypeId" name="MembershipTypes">
@foreach (var membershipType in @Model)
{
<option value=@membershipType.Id>
@*@membershipType.SignupFee*@
@membershipType.Id
</option>
}
</select>
</td>
</tr>
</table>
<input type="submit" value="save"/>
</form>
【问题讨论】:
标签: html asp.net-mvc razor