我在控制器和剃须刀视图中有以下代码。
调用Upload()
时,我想返回另一个以模型为参数的视图,以便可以在视图中访问它。
但是我一直在@Model.PhoneNumber
另一个问题是必须对模型进行强类型化吗?看来当我传递new { PhoneNumber = "123456" }
时,也无法从视图访问该属性。
[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
return View();
}
[HttpPost]
public ActionResult Upload(FormCollection file)
{
return View("CertificateValidation", new IndexViewModel { PhoneNumber = "123456" });
}
查看:
model WebApplicationMVC.Models.IndexViewModel
<p>@Model.PhoneNumber </p>
答案 0 :(得分:0)
您使用模型返回视图的方式是正确的,应该没有任何问题。
return View("CertificateValidation", new IndexViewModel { PhoneNumber = "123456" });
也就是说,您的实际代码很可能不会像这样,并且可能正在从某个可能的数据库(例如数据库)中获取数据,这可能返回null
,您可以通过调试或编写空检查来进行调查。 / p>
对于第二个答案,如果要使用@model
指令在视图中指定模型的类型,则必须在return View()方法调用中提供这种类型的实例。另外,您可以使用@model dynamic
,它可以让您传递任何内容作为模型。 See this link
答案 1 :(得分:0)
问题在于您的get方法。
您的以下方法不返回任何模型。因此Model为null,因此会产生错误。
[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
var model = new IndexViewModel();
return View(model);
}