标签: asp.net-mvc-routing

ASP.NET MVC:在表单提交时添加到查询字符串

我正在ASP.NET MVC中构建一个网格,我有以下问题:

  • 在网格上方,我有一个列选择器,可让人们自定义显示的列.这是一个带有提交按钮的表单,以便人们可以一次添加/删除多个列,而无需通过多个回发.
  • 在网格下面我有分页.这是分页动作链接(一个href的).

alt text http://thomasstock.net/mvcget.jpg

当用户添加/删除列时,会发生什么,表单被提交到http:// localhost:56156 /?columnsToDisplay = EmployeeId,当然网格会跳回到第1页.我希望将网格保留在页面上用户目前正在使用 所以我需要一种方法将当前的查询字符串参数包含在表单的action属性中.

另一种方式:我需要一种方法来对动作链接做同样的事情.但这不太必要,因为我总是可以用按钮替换a href并将它们放在一个表单中.但我宁愿不这样做.

我正在寻找没有javascript的解决方案!我可以在javascript中自己做,但我希望我的网格能够在禁用javascript的浏览器上完美运行.

任何帮助表示赞赏.

编辑:哦是的,为了使它更难,我也在寻找没有cookie /会话变量的解决方案.:-)

asp.net-mvc asp.net-mvc-routing

1
推荐指数
1
解决办法
4164
查看次数

在asp.net mvc3中返回特定视图时出现问题

我有一个视图文件结构,如:

Views
   Company
      Department
      Employee
          ManageEmployee.cshtml
Run Code Online (Sandbox Code Playgroud)

而控制器是

public class EmployeeController : Controller
 {
    public ActionResult Index(int dptId)
    {
            var loadedEmp = getEmpOf(dptId);
            return View("Company/Employee/ManageEmployee", loadedEmp);
     }
}
Run Code Online (Sandbox Code Playgroud)

但控制器给我一个错误 - 告诉它找不到视图.这是它搜索的路径.

~/Views/Employee/Company/Employee/ManageEmployees.aspx
~/Views/Employee/Company/Employee/ManageEmployees.ascx
~/Views/Shared/Company/Employee/ManageEmployees.aspx
~/Views/Shared/Company/Employee/ManageEmployee.ascx
~/Views/Employee/Company/Employee/ManageEmployee.cshtml
~/Views/Employee/Company/Employee/ManageEmployee.vbhtml
~/Views/Shared/Company/Employee/ManageEmployee.cshtml
~/Views/Shared/Company/Employee/ManageEmployee.vbhtml
Run Code Online (Sandbox Code Playgroud)

基本上,如果我能够消除Employee部分,引擎将找到它.

〜/ Views/Employee /Company/Employee/ManageEmployee.cshtml 到此

〜/查看/公司/员工/ ManageEmployee.cshtml

有关如何实现这一目标的任何见解.

谢谢.

model-view-controller asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

1
推荐指数
1
解决办法
9543
查看次数

ASP.net MVC更改应用程序的URL

可以通过URL访问MVC上的当前应用程序:www.someserver.com/myapplication

现在有一个请求将其更改为新的URL:www.someserver.com/NEWFOLDER/myapplication

所以我的问题是MVC将如何表现,我是否必须进行任何路由更改?

谢谢 !

asp.net asp.net-mvc asp.net-mvc-routing

1
推荐指数
1
解决办法
323
查看次数

相对于当前控制器的MVC Ajax动作

我正在尝试从母版页中的链接获取Ajax调用.

所以我想只指定相对于当前页面/控制器的动作.

 $.ajax({
      url: '/Save',
      type: "GET",
      // .. etc 
 });
Run Code Online (Sandbox Code Playgroud)

我想调用页面上任何控制器的"保存"操作.我认为这会直接起作用,但似乎没有.有优雅的解决方案吗?

asp.net-mvc jquery asp.net-mvc-routing relative-url

1
推荐指数
1
解决办法
2388
查看次数

为什么一个单元测试MVC路由?

我看到人们已经提出了更具体的问题,但我的问题很广泛,为什么要测试任何路线呢?这样做的好处在哪里真正闪耀?谢谢!

PS目前在.Net C#MVC 3中这样做

c# asp.net-mvc unit-testing asp.net-mvc-routing

1
推荐指数
1
解决办法
402
查看次数

Enum的ASP NET MVC3路由

我通过允许格式的URL设置路由以允许SEO(和人类)友好的URL ~/{category}/{title}

所有这些都应该路由到具有适当重定向方法的内容控制器.我也想允许~/{category}你带一个过滤的索引.

所有这些对我有用:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Category And Title", // Route name
        "{category}/{title}", // URL with parameters
        new { controller = "Content", action = "SeoRouting", title = UrlParameter.Optional }, // Parameter defaults
        new { category = "People|IT|Personnel|Finance|Procedures|Tools"}
        ); 

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
        );

}
Run Code Online (Sandbox Code Playgroud)

但如果类别发生变化,那么我需要在两个地方进行更改.在Global.asax和enum中我们有类别.

在一个理想的世界中,如果路径的第一部分中的值与ContentCategory枚举匹配(不区分大小写),则需要使用第一条路径,如果不匹配则使用默认路由.

这些类别很快就会发生变化所以这不是一件大事,但如果感觉应该是可能的话.

asp.net-mvc-routing asp.net-mvc-3

1
推荐指数
1
解决办法
1553
查看次数

asp.net mvc处理http 400错误

我有一个ASP.NET MVC 4应用程序,我想将所有HTTP 400错误重定向到我的自定义错误页面.虽然HTTP 400错误没有像404错误那样处理,但我正在寻找一个小时来找到解决方案.有许多解决方案显示如何转义400(错误的请求错误),即允许在url中使用特殊字符.但我无法找到一些解决方案来捕获异常.

请帮助我以某种方式捕获所有HTTP错误请求并将它们重定向到我的错误页面.

asp.net-mvc asp.net-mvc-routing http-status-code-400 asp.net-mvc-4

1
推荐指数
1
解决办法
5988
查看次数

带有通配符的路由

我想为API进行版本化的路由.

Folder结构是这样的

/api/v1-0/ApiController.cs
/api/v1-1/ApiController.cs
/api/v1-2/ApiController.cs
Run Code Online (Sandbox Code Playgroud)

所以我添加了路线

    routes.MapRoute(
        name: "DefaultApiVersioned",
        url: "api/v{*Version}/{controller}/{action}/{id}",
        defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
    );
Run Code Online (Sandbox Code Playgroud)

但是当添加路线时,我会得到一个" ArgumentException".异常消息是:

"Ein Pfadsegment, das mehrere Abschnitte enthält, z.B. einen Literalabschnitt oder einen Parameter, darf keinen Catchall-Parameter enthalten. "

翻译:

"A path segment, that has multiple sections, such as a literal section or a parameter, can not have a catchall parameter"

那么如何更改路由配置呢?

asp.net-mvc-routing asp.net-mvc-4

1
推荐指数
1
解决办法
4290
查看次数

如何在不定义Controller名称的情况下访问操作方法

我正在开发一个Web应用程序,我有一个带有三种动作方法的Home控制器; 索引,关于,联系.现在要访问About操作方法我需要键入以下url https://servername/home/about所以我的问题是我是否可以访问About操作方法而不引用"Home"控制器类.如"http://servername/About/"感谢,问候

asp.net-mvc asp.net-mvc-routing asp.net-mvc-5

1
推荐指数
1
解决办法
485
查看次数

C#MVC url参数未被读取

ASP.net MVC和C#一般都是新手.PHP/NodeJS的经验主要是Java.

我在控制器中有一个方法,如下所示:

public ActionResult ImageProcess(string fileName){
  string url = "http://myurl.com/images/" + fileName + ".jpg";
  //Code to stream the file
}
Run Code Online (Sandbox Code Playgroud)

当我以" http://myurl.com/Home/ImageProcess/12345 " 导航到它时,我会在尝试获取文件时抛出404错误.

如果我像这样硬编码...

public ActionResult ImageProcess(string fileName){
  string url = "http://myurl.com/images/12345.jpg";
  //Code to stream the file
}
Run Code Online (Sandbox Code Playgroud)

...它工作得很好,按预期返回我处理过的图像.

为什么会这样?

c# asp.net asp.net-mvc routing asp.net-mvc-routing

1
推荐指数
1
解决办法
1563
查看次数