我正在ASP.NET MVC中构建一个网格,我有以下问题:
alt text http://thomasstock.net/mvcget.jpg
当用户添加/删除列时,会发生什么,表单被提交到http:// localhost:56156 /?columnsToDisplay = EmployeeId,当然网格会跳回到第1页.我希望将网格保留在页面上用户目前正在使用 所以我需要一种方法将当前的查询字符串参数包含在表单的action属性中.
另一种方式:我需要一种方法来对动作链接做同样的事情.但这不太必要,因为我总是可以用按钮替换a href并将它们放在一个表单中.但我宁愿不这样做.
我正在寻找没有javascript的解决方案!我可以在javascript中自己做,但我希望我的网格能够在禁用javascript的浏览器上完美运行.
任何帮助表示赞赏.
编辑:哦是的,为了使它更难,我也在寻找没有cookie /会话变量的解决方案.:-)
我有一个视图文件结构,如:
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
可以通过URL访问MVC上的当前应用程序:www.someserver.com/myapplication
现在有一个请求将其更改为新的URL:www.someserver.com/NEWFOLDER/myapplication
所以我的问题是MVC将如何表现,我是否必须进行任何路由更改?
谢谢 !
我正在尝试从母版页中的链接获取Ajax调用.
所以我想只指定相对于当前页面/控制器的动作.
即
$.ajax({
url: '/Save',
type: "GET",
// .. etc
});
Run Code Online (Sandbox Code Playgroud)
我想调用页面上任何控制器的"保存"操作.我认为这会直接起作用,但似乎没有.有优雅的解决方案吗?
我看到人们已经提出了更具体的问题,但我的问题很广泛,为什么要测试任何路线呢?这样做的好处在哪里真正闪耀?谢谢!
PS目前在.Net C#MVC 3中这样做
我通过允许格式的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 4应用程序,我想将所有HTTP 400错误重定向到我的自定义错误页面.虽然HTTP 400错误没有像404错误那样处理,但我正在寻找一个小时来找到解决方案.有许多解决方案显示如何转义400(错误的请求错误),即允许在url中使用特殊字符.但我无法找到一些解决方案来捕获异常.
请帮助我以某种方式捕获所有HTTP错误请求并将它们重定向到我的错误页面.
asp.net-mvc asp.net-mvc-routing http-status-code-400 asp.net-mvc-4
我想为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"
那么如何更改路由配置呢?
我正在开发一个Web应用程序,我有一个带有三种动作方法的Home控制器; 索引,关于,联系.现在要访问About操作方法我需要键入以下url https://servername/home/about所以我的问题是我是否可以访问About操作方法而不引用"Home"控制器类.如"http://servername/About/"感谢,问候
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)
...它工作得很好,按预期返回我处理过的图像.
为什么会这样?