public ActionResult Edit(int id, CompPhone cmpPhn)
{
var vM = new MyViewModel();
if (cmpPhn != null) { vM.CmpPhnF = cmpPhn; }
...
}
如果我讓cmpPhn可選:
public ActionResult Edit(int id, CompPhone? cmpPhn)
我得到「錯誤1型 'MyProject.Models.CompPhone' 必須是一個不可爲空的值類型,以便將其用作通用類型或方法'System.Nullable'中的參數'T'。
如何使此輸入參數可選方法爲
這裏是你沒有把它可選視圖模型
public class MyViewModel : IValidatableObject
{
...
public CompPhone CmpPhnF { get; set; }
...
}
調用方法
[HttpPost, ValidateAntiForgeryToken]
public ActionResult PhoneTest(MyViewModel vM)
{
if (ModelState.IsValid)
{ var cmpPhn = vM.CmpPhnF;
return RedirectToAction("Edit", new { id = vM.AcntId, cmpPhn });
}
...
}
感謝哈比卜清除可空和選裝之間的精妙之處。我更喜歡你對rablinz的回答,因爲它不需要重複該方法。是的,CompPhone是一個班級。 – Joe
@Joe,rablinz的答案也是有效的,但是如果你使用的是.Net framework 4.0或者更高版本,那麼它帶有C#4.0,它有一個方法的默認參數選項。在此版本之前,您必須適應rablinz的答案 – Habib
我已將調用方法添加到我的問題中。你回答瞭如何將課程帶入方法。我有一個關於如何從一個方法中傳遞一個類的跟進問題。當我調試調用方法時,id而不是cmpPhn被添加到路由值中。謝謝 – Joe