Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC中从razor视图访问模型_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# MVC中从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() {

我在controller和razor视图中有以下代码

调用
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);
}