我的_partial.cshtml中具有以下格式:
<form class="form-inline text-center" asp-controller="Search" asp-action="Index">
@Html.TextBoxFor(m => new Search().SearchTerm,new { @class = "form-control search-term-box",placeholder = "Search keyword" })
<span class="btn btn-outline-primary mr-1 ml-1">Near</span>
@Html.TextBoxFor(m => new Search().Location,new { @class = "form-control search-term-box mr-2",placeholder = "Los Angeles,CA" })
<button class="btn btn-primary my-2 my-sm-0" type="submit">Search</button>
</form>
我的SearchController.cs:
[BindProperty]
public Search SearchModel { get; set; }
[HttpPost]
public IactionResult Index(Search term,Search location = null)
{
SearchModel = new Search()
{
SearchTerm = term.ToString(),Location = location.ToString()
};
//(Razor) Search Page with no page model
//Bind SearchModel to page
return View("Search");
}
在ASP.Net MVC中,我可以做类似的事情,并且可以正常工作,但是如何使它与ASP.Net Core Razor Pages一起使用?单击提交按钮没有任何作用。如果在Startup.cs中很重要,我在ConfigureServices方法下有services.AddMvc(o => o.EnabledEndpointRouting = false);
,在Configure方法下有app.UseMvc();
。我是Razor Pages的新手,所以如果有更好的约定可以达到相同的效果,请提出建议。
编辑:我找到了解决方案,我向搜索控制器添加了路由属性。尽管它是一个合适的解决方案,但我实际上将MVC约定应用于由Razor Pages组成的项目。如果任何人都可以提供适用于Razor Pages的解决方案,欢迎回答。