C# MVC中从razor视图访问模型
我在controller和razor视图中有以下代码 调用C# MVC中从razor视图访问模型,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我在controller和razor视图中有以下代码 调用Upload()时,我想返回另一个以模型为参数的视图,以便可以在视图中访问它 但我在@Model.PhoneNumber 另一个问题是模型必须是强类型的吗?似乎当我传入new{PhoneNumber=“123456”}时,也无法从视图访问该属性 [HttpGet] [Route("{code}/CertificateValidation")] public ActionResult CertificateValidation() {
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
@Model.PhoneNumber
返回模型视图的方式是正确的,不应该有任何问题
return View("CertificateValidation", new IndexViewModel { PhoneNumber = "123456" });
也就是说,您的实际代码很可能不是这样的,可能是从某个源(如数据库)获取数据,该源可能返回null
,您可以通过调试或编写null检查来调查该数据
对于第二个答案,如果使用
@model
指令在视图中指定模型的类型,则必须在return view()方法调用中提供此类型的实例。或者,您可以使用@model dynamic
,它允许您将任何内容作为模型传递 问题在于get方法
以下方法不返回任何模型。所以模型是空的,所以它给出了错误
[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
var model = new IndexViewModel();
return View(model);
}
“另一个问题是模型必须是强类型的吗?”这仍然是强类型;只是编译器创建了类型,而不是您创建的类型。这种方法的问题是您在视图的这一部分中放了什么:
@model XXXXXX
?您没有命名类型,因此无法在其中放置任何内容。
[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
var model = new IndexViewModel();
return View(model);
}