我无法找到并返回正确的视图。
位于Account
区域,AccountController
,视图为ConfirmAccount.cshtml.
,需要string
模型。
我试过这些:
A)我试着像普通一样传递模型,视图名称与动作名称相匹配。
public ActionResult ConfirmAccount(string id)
{
return View(id);
}
这似乎不起作用,因为模型是一个字符串,它只是试图找到一个名为id的字符串。
B)所以我尝试指定视图名称,希望它能找到ConfirmAccount视图,并理解id是模型。
public ActionResult ConfirmAccount(string id)
{
return View("ConfirmAccount", id);
}
这个结果让我很困惑,它试图找到以下内容:
〜/地区/帐户/查看/帐户/ ConfirmAccount.aspx 〜/地区/客户/浏览/帐号/ ConfirmAccount.ascx 〜/地区/帐号/查看/共享/ ConfirmAccount.aspx 〜/地区/帐号/查看/共享/ ConfirmAccount.ascx 〜/查看/帐号/ ConfirmAccount.aspx 〜/ Views / Account / ConfirmAccount.ascx~ / Views / Shared / ConfirmAccount.aspx 〜/查看/共享/ ConfirmAccount.ascx 〜/地区/客户/浏览/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.master 〜/地区/帐号/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.master 〜/查看/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.master 〜/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.master 〜/地区/客户/浏览/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.cshtml 〜/地区/客户/浏览/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.vbhtml 〜/地区/帐号/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.cshtml 〜/地区/帐号/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.vbhtml 〜/查看/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.cshtml 〜/查看/帐号/ xNMf1HNl_2pLp-6MXpXl3g2If.vbhtml 〜/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.cshtml 〜/查看/共享/ xNMf1HNl_2pLp-6MXpXl3g2If.vbhtml
如果它正在寻找那里的cshtml页面,它正在寻找aspx / ascx页面是完美的,但由于某种原因它不是,而是试图通过id找到cs / vbshtml页面。有谁知道为什么会这样?
C)我能想到的第三个也是唯一的另一件事就是指定控制器名称。
public ActionResult ConfirmAccount(string id)
{
return View("ConfirmAccount", "Account", id);
}
〜/地区/帐户/查看/帐户/ ConfirmAccount.aspx 〜/地区/客户/浏览/帐号/ ConfirmAccount.ascx 〜/地区/帐号/查看/共享/ ConfirmAccount.aspx 〜/地区/帐号/查看/共享/ ConfirmAccount.ascx 〜/查看/帐号/ ConfirmAccount.aspx 〜/ Views / Account / ConfirmAccount.ascx~ / Views / Shared / ConfirmAccount.aspx 〜/查看/共享/ ConfirmAccount.ascx 〜/地区/客户/浏览/帐号/ Account.master 〜/地区/帐号/查看/共享/ Account.master 〜/ Views / Account / Account.master~ / Views / Shared / Account.master 〜/地区/客户/浏览/帐号/ Account.cshtml 〜/地区/客户/浏览/帐号/ Account.vbhtml 〜/地区/帐号/查看/共享/ Account.cshtml 〜/地区/帐号/查看/共享/ Account.vbhtml 〜/ Views / Account / Account.cshtml~ / Views / Account / Account.vbhtml 〜/ Views / Shared / Account.cshtml~ / Views / Shared / Account.vbhtml
这类似于最后一个,如果它在那里寻找cshtml,那么第一个是正确的路径,但由于某种原因它不是,我不明白为什么。在查找cshtml页面时,它会查找帐户而不是ConfirmAccount。
如何在我的模型是字符串的场景中正确返回ConfirmAccount.cshtml视图?
答案 0 :(得分:1)
当您传入一个字符串作为唯一参数时,它使用重载View(string viewName)
。
您需要确保使用重载View(object model)
。
您可以将模型转换为object
。
return View((object)id);
我倾向于避免使用string
模型,特别是出于这个原因。
请务必查看View
的所有重载 - 例如:string, string
viewName, masterName
其中string, object
为viewName, model
,因此为了使用那个,你再次必须转向object
。三个参数的重载是viewName, masterName, model
。
答案 1 :(得分:0)
默认情况下,WebFormViewEngine
包含在RazorViewEngine
之前。这就是为什么它正在寻找* .aspx。
要解决此问题,请通过在Global.asax.cs
protected void Application_Start()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
ViewEngines.Engines.Add(new WebFormViewEngine());
}