首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RouteConfig追加页面URL

如何使用RouteConfig追加页面URL
EN

Stack Overflow用户
提问于 2014-12-16 10:29:07
回答 1查看 606关注 0票数 0

我很难完成我的代码工作,但我想我已经读到了足够多的信息,表明这是正确的方法。

在我的intranet上,我希望用户输入一个单词来搜索文本框,并检查一个checkbox。当新页面加载时,我希望ASP.NET MVC的URL重写服务启动并从

代码语言:javascript
复制
mysite.com/?id=blah&isChecked=true

代码语言:javascript
复制
mysite.com/home/index/blah/true

我的代码不起作用,因为它不会产生错误,但不会做我正在解释的事情。因此,我已经删除了复选框,只关注textbox。

我唯一的路线是

代码语言:javascript
复制
routes.MapRoute(
           name: "Default",
           url: "{controller}/{action}/{MyType}",
           defaults: new { controller = "Home", action = "Index", MyType = UrlParameter.Optional }
       );

我的控制器

代码语言:javascript
复制
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this";
        return View();
    }

    [HttpGet]
    public ActionResult Index(string MyType)
    {
        ViewBag.Message = "..." + MyType;

        return View();
    }

我的观点是

代码语言:javascript
复制
@using (Html.BeginForm("Index", "Home",FormMethod.Get))
{ 
    <input name="MyType" /><br />
    <input type="submit" />
}

@Html.ActionLink("Click me", "Index", new { @MyType = "Blah" }) //renders correctly

问题是,它显示了仍在地址栏中的查询字符串。

代码语言:javascript
复制
mysite.com/?MyType=MySearchValue

而不是

代码语言:javascript
复制
mysite.com/Home/Index/MySearchValue
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 10:58:16

不能仅仅通过路由来实现这一点,因为浏览器在作为GET请求的一部分时总是将表单值作为查询字符串参数发送。一旦将请求发送到服务器,MVC框架就无法处理所使用的URL。

这只剩下一个真正的选项(假设您不想使用JavaScript发送自定义请求),即显式地重定向到所需的URL (这意味着提交此表单时总是有两个请求)。

最简单的方法是在控制器中(而是在单独的控制器中,以确保方法签名中没有冲突):

代码语言:javascript
复制
public class FormController : Controller
{
    public ActionResult Index(string MyType)
    {
        return RedirectToAction("Index", "MyProperController", new { MyType });
    }
}

如果您将表单定向到此控制器操作,MVC将使用路由引擎为实际操作生成适当的URL,并相应地重定向浏览器。

您可以从相同的控制器操作中执行此操作,但需要检查请求URL以检查是否使用了查询字符串,并将其重定向到相同的操作,这有点奇怪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27502458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档