C# 为什么我的ASP.NET操作寻找错误的视图?

C# 为什么我的ASP.NET操作寻找错误的视图?,c#,asp.net-mvc,asp.net-mvc-2,C#,Asp.net Mvc,Asp.net Mvc 2,我有一个简单的动作: public ActionResult CommentError(string error) { return View(error); } 我有一个名为CommentError.ascx的简单局部视图: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %> <%: Model %> 当

我有一个简单的动作:

    public ActionResult CommentError(string error)
    {
        return View(error);
    }
我有一个名为CommentError.ascx的简单局部视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>

<%: Model %>

当我通过进入
myurl.com/find/Comments/CommentError
浏览到视图目录时,视图显示良好。。。没有错误

但是,当我转到
myurl.com/find/Comments/CommentError?error=SomeErrorString
时,它不会将querystring绑定到
string error
,而是查找一个名为
SomeErrorString.ascx
的视图

为什么会这样


Edit
注意,我使用的路径(/find/Comments/CommentError:::/find/{controler}/{action})表明我有一个自定义的global.asax

通常应该避免传递给
视图()
助手的
模型对象为
字符串类型。这就是你犯错误的原因

MVC正在寻找一个名为字符串参数的
视图。因为
View()
的最佳匹配重载是:
View(string)
重载使用
string
参数作为要加载的视图的名称


您应该将模型数据(字符串)封装在自定义类型中,或者改为通过
ViewData
集合传递该信息。

通常应避免传递给
View()的
Model
对象为
string
类型。这就是你犯错误的原因

MVC正在寻找一个名为字符串参数的
视图。因为
View()
的最佳匹配重载是:
View(string)
重载使用
string
参数作为要加载的视图的名称


您应该将模型数据(字符串)封装在自定义类型中,或者改为通过
ViewData
集合传递该信息。

如上所述,MVC正在寻找一个名为与字符串参数相同的视图。要避免这种情况,您需要将其投射到对象

public ActionResult CommentError(string error)
{
    return View((object)error);
}

如上所述,MVC正在寻找一个名为与字符串参数相同的视图。要避免这种情况,您需要将其投射到对象

public ActionResult CommentError(string error)
{
    return View((object)error);
}
作为替代答案(仅用于教育),您可以调用不同的视图重载()

作为替代答案(仅用于教育),您可以调用不同的视图重载()


... 视图数据?放弃强类型视图?真的吗?@quakkels:如果开发者选择不走第一条建议的路线,作为第二个选项,一个自定义模型。@David-我提到了一个自定义模型对象。夸克尔忙得下意识,我想他看不到。。。。视图数据?放弃强类型视图?真的吗?@quakkels:如果开发者选择不走第一条建议的路线,作为第二个选项,一个自定义模型。@David-我提到了一个自定义模型对象。quakkels忙得下意识,我猜他看不到这一点。谢谢你提供的额外信息!谢谢你的额外信息!