này hoạt động:Làm thế nào để vượt qua một tham số tùy chọn vào ActionResult
public ActionResult Edit(int id, CompPhone cmpPhn)
{
var vM = new MyViewModel();
if (cmpPhn != null) { vM.CmpPhnF = cmpPhn; }
...
}
Nếu tôi làm cmpPhn tùy chọn:
public ActionResult Edit(int id, CompPhone? cmpPhn)
tôi nhận được "Lỗi 1 Kiểu 'MyProject.Models.CompPhone' phải một loại giá trị không thể sử dụng để sử dụng nó làm tham số 'T' theo kiểu hoặc phương thức chung 'System.Nullable'.
Làm cách nào để làm cho tham số đầu vào này thành phương pháp tùy chọn?
Dưới đây là mô hình điểm
public class MyViewModel : IValidatableObject
{
...
public CompPhone CmpPhnF { get; set; }
...
}
gọi method
[HttpPost, ValidateAntiForgeryToken]
public ActionResult PhoneTest(MyViewModel vM)
{
if (ModelState.IsValid)
{ var cmpPhn = vM.CmpPhnF;
return RedirectToAction("Edit", new { id = vM.AcntId, cmpPhn });
}
...
}
Cảm ơn Habib cho thanh toán bù trừ mà tinh tế giữa lên nullable và không bắt buộc. Tôi thích câu trả lời của bạn hơn rablinz vì nó không yêu cầu sao chép phương thức. Và có CompPhone là một lớp học. – Joe
@Joe, câu trả lời của rablinz cũng hợp lệ, nhưng nếu bạn đang sử dụng .Net framework 4.0 trở lên thì nó đi kèm với C# 4.0 có tùy chọn tham số mặc định cho một phương thức. Trước phiên bản đó, bạn phải thích ứng với câu trả lời của rablinz – Habib
Tôi đã thêm phương thức gọi cho câu hỏi của mình. Bạn đã trả lời cách đưa lớp vào một phương thức. Tôi có một câu hỏi theo dõi làm thế nào để vượt qua một lớp học của một phương pháp. Khi tôi gỡ lỗi các phương pháp gọi id nhưng không phải là cmpPhn được thêm vào các giá trị tuyến đường. Cảm ơn – Joe