2

我在部分视图和其他 3 个使用布局的页面中的布局页面中有一个搜索文本输入:

@using (Html.BeginForm("Search", "Product"))
{
    @Html.TextBoxFor(m => m.SearchText)
    @Html.ValidationMessageFor(m => m.SearchText)

    <input type="submit" value="Search"/>
}

当它进入 Product/Search 操作时,我如何知道它来自哪里并返回正确的页面并显示一条消息,假设其他 3 个页面使用不同的 ViewModel?

4

1 回答 1

2

在您的布局中,修改您的BeginForm以在路由值中包含请求路径:

@using (Html.BeginForm("Search", "Product"),new {path = Request.Path})

然后,在您的控制器中,您可以通过重定向到该路径来完成:

public ActionResult Search( string path, FormCollection form ) {
    // build your search results here
    return Redirect( path );
}

这应该可以解决问题。如果您需要传递其他信息,您只需将查询字符串附加到路径:

public ActionResult Search( string path, FormCollection form ) {
    // build your search results here
    return Redirect( path + "?message=foo" );
}
于 2012-06-01T19:17:49.033 回答