Esto funciona:Cómo pasar un parámetro opcional en ActionResult
public ActionResult Edit(int id, CompPhone cmpPhn)
{
var vM = new MyViewModel();
if (cmpPhn != null) { vM.CmpPhnF = cmpPhn; }
...
}
Si hago cmpPhn opcional:
public ActionResult Edit(int id, CompPhone? cmpPhn)
me sale "error 1 El tipo 'MyProject.Models.CompPhone' debe ser un tipo de valor que no admite nulos para usarlo como parámetro 'T' en el tipo genérico o método 'System.Nullable'.
¿Cómo puedo hacer que este parámetro de entrada sea opcional?
Aquí está el modelo de vista
public class MyViewModel : IValidatableObject
{
...
public CompPhone CmpPhnF { get; set; }
...
}
Llamando al método
[HttpPost, ValidateAntiForgeryToken]
public ActionResult PhoneTest(MyViewModel vM)
{
if (ModelState.IsValid)
{ var cmpPhn = vM.CmpPhnF;
return RedirectToAction("Edit", new { id = vM.AcntId, cmpPhn });
}
...
}
Gracias Habib para despejar que sutileza entre anulable y opcional de hasta. Prefiero tu respuesta sobre la de Rablinz ya que no requiere duplicar el método. Y sí CompPhone es una clase. – Joe
@Joe, la respuesta de rablinz también es válida, pero si usa .Net framework 4.0 o superior, entonces viene con C# 4.0 que tiene la opción de parámetro predeterminada para un método. Antes de esa versión, debes adaptarte a la respuesta de rablinz – Habib
Agregué el método de llamada a mi pregunta. Usted respondió cómo llevar la clase a un método. Tengo una pregunta de seguimiento sobre cómo pasar una clase de un método. Cuando depuro el método de llamada, el id pero no el cmpPhn se agrega a los valores de la ruta. Gracias – Joe