在我的MVC3应用程序中,我有一个根据所选对象路由到自定义操作的操作。
public ActionResult SearchCityState(string city, string state, string searchTerm)
{
city = Server.HtmlEncode(city);
state = Server.HtmlEncode(state);
searchTerm = Server.HtmlEncode(searchTerm);
// now build the search object
...
return DoSearch(sourceRequestObject);
}
public ActionResult SearchState(string state, string searchTerm)
{
state = Server.HtmlEncode(state);
searchTerm = Server.HtmlEncode(searchTerm);
// now build the search object
...
return DoSearch(sourceRequestObject);
}
这两个方法在填充对象和在类中调用以下DoSearch()方法方面做了一些工作,并根据一些逻辑进行选择:
public ActionResult DoSearch(FeederService.SearchRequestObject sourceRequestObject)
{
...
var model = new MyAppMVC.Models.ResultsModel();
var page = model.GetData(sourceRequestObject);
return View(page);
}
这是我的模特课:
public class ResultsPage
{
public DataSet dsResults { get; set; }
public Int32 actualNumberOfResults { get; set; }
public int numberOfResultsReturned { get; set; }
}
public class ResultsModel
{
...
public ResultsPage GetData(FeederService.SearchRequestObject sourceRequestObject)
{
var page = new ResultsPage();
...
page.dsResults = myWcfFeederClient.GetData(sourceRequestObject);
if (page.dsResults != null)
{
page.actualNumberOfResults = Convert.ToInt32(page.dsResults.Tables[1].Rows[0]["ActualNumberOfResults"].ToString());
page.numberOfResultsReturned = Convert.ToInt16(page.dsResults.Tables[1].Rows[0]["NumberOfResultsReturned"].ToString());
}
return page;
}
}
我在/Results/SearchResults.cshtml中定义了一个我希望将所有请求路由到的视图,因为所有的输出都是相同的
问题是最初选择的操作名称是默认的选定视图。即。如果调用SearchCityState(),则抛出以下异常:
视图'SearchCityState'或其 找不到master或没有查看引擎 支持搜索的位置。该 搜索了以下位置:
〜/查看/结果/ SearchCityState.aspx 〜/查看/结果/ SearchCityState.ascx 〜/查看/共享/ SearchCityState.aspx 〜/查看/共享/ SearchCityState.ascx 〜/查看/结果/ SearchCityState.cshtml 〜/查看/结果/ SearchCityState.vbhtml 〜/查看/共享/ SearchCityState.cshtml 〜/查看/共享/ SearchCityState.vbhtml
...和SearchState()类似。我对这个问题很熟悉,但我不记得如何将所有请求路由到那个视图。
感谢。
更新
以下是我定义的路线:
routes.MapRoute(name: "CityHomePage", url: "{city}-{state}", defaults: new { controller = "Home", action = "GeoHomePage" });
routes.MapRoute(name: "CityStateResults", url: "{city}-{state}/{searchTerm}", defaults: new { controller = "Results", action = "SearchCityState" });
...以及定义为:
的链接<a href="/City-State/">My CityState Link</a>
我最终遇到以下错误:
视图'SearchCityState'或其 找不到master或没有查看引擎 支持搜索的位置。该 搜索了以下位置: 〜/查看/结果/ SearchCityState.aspx 〜/查看/结果/ SearchCityState.ascx 〜/查看/共享/ SearchCityState.aspx 〜/查看/共享/ SearchCityState.ascx 〜/查看/结果/ SearchCityState.cshtml 〜/查看/结果/ SearchCityState.vbhtml 〜/查看/共享/ SearchCityState.cshtml 〜/查看/共享/ SearchCityState.vbhtml
答案 0 :(得分:1)
使用View()
方法的另一个重载,该方法将视图名称作为第一个参数:
public ActionResult DoSearch(FeederService.SearchRequestObject sourceRequestObject)
{
...
var model = new MyAppMVC.Models.ResultsModel();
var page = model.GetData(sourceRequestObject);
return View("SearchResults", page);
}
(MSDN article没有帮助,但答案感觉不完整)