c# – 如何将可选参数传递给ActionResult

前端之家收集整理的这篇文章主要介绍了c# – 如何将可选参数传递给ActionResult前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这有效:
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 });
  }
  ...
}

解决方法

你没有把它变成可选的,你可以让它成为可空的.要使其可选,您需要为参数定义默认值. (仅适用于C#4.0或更高版本):
public ActionResult Edit(int id,CompPhone cmpPhn = null)

您当前的代码指定为Nullable,似乎CompPhone是一个类而不是值类型,并且不能为Nullable.

CompPhone? cmpPhn相当于Nullable< CompPhone> CompPhone应该是一个结构

猜你在找的C#相关文章