c# – 如何将可选参数传递给ActionResult
发布时间:2020-12-15 18:25:07 所属栏目:百科 来源:网络整理
导读:这有效: 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.
这有效:
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应该是一个结构 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |