我正在编辑这个原始问题,因为我认为我已经缩小了问题的范围......
我的网站中有一个视图,不允许我将$ document.ready放在母版页内容占位符中.我已经把这个页面剥离到了骨子里,唯一特别之处在于它在global.asax中有一个自定义路由
routes.MapRoute("Books",
"{controller}/{action}/{keywords}/{pageNumber}",
new { controller = "Books", action = "SearchResults" }
);
Run Code Online (Sandbox Code Playgroud)
知道为什么这个自定义路由会在放入masterpages contentplaceholder区域时停止$ document.ready正常工作吗?
www.yoursite.com/image/ http://images.google.com.ph/images/nav_logo7.png
我需要知道的是Controller Action和Global.asax路由
我在路由器映射中形成了一些网址
/section/{{some_section_name}}
/topic/{{some_topic_name}}
Run Code Online (Sandbox Code Playgroud)
现在我正在考虑将该部分转换为短路,
/!{{some_section_name}}以避免显式拼写/section
同样我想用
/@{{some_topic_name}}而不是/topic/{{some_topic_name}}
我相信浏览器不会自己编码这些字符.可以使用!和上面提到的路线中的@符号?请在网上使用这些约定给我副作用.
我有以下路线将在我的ASP.NET MVC网站上广泛发布:
routes.MapRoute(
null,
"products/{ProductID}/{SeoName}",
new { controller = "Product", action = "ProductDetails", SeoName = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我想确保ProductID是一个有效的整数.我知道我可以使用基于正则表达式的路由约束或使用类似于int.TryParse()的自定义路由约束来执行此操作.
在我看来,正则表达式是相当昂贵的操作,我不想为每个访问我的网站的请求运行一个,但我似乎找不到任何信息说我应该小心使用基于正则表达式的路由约束.
所以我的问题是,我应该使用基于正则表达式的路由约束还是自定义路由约束来验证参数是否为整数?
我有以下控制器:
public class ItemController : Controller
{
private SomeDbEntities _db= new SomeDbEntities ();
//
// GET: /Item/
public ActionResult Index()
{
var items = _db.Items.ToList();
return View(items);
}
public ActionResult Decription(int id)
{
var item = _db.Items.Single(a => a.ItemID == id);
return View(item);
}
}
Run Code Online (Sandbox Code Playgroud)
和2次浏览:
Index.cshmtl
@model IEnumerable<Web.Models.Item>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<ul>
@foreach (var item in Model)
{
<li>@Html.ActionLink(item.Name, "Description", new { id = item.ItemID})</li>
}
Run Code Online (Sandbox Code Playgroud)
Description.cshtml
@model Web.Models.Item
@{
ViewBag.Title = "Decription";
}
<h2>Decription</h2>
<p>@Model.Description</p> …Run Code Online (Sandbox Code Playgroud) 在我的一个控制器中,我确实有一个如下所示的返回:
return RedirectToAction("AdministerFiles/ViewDataFiles?catid=14");
Run Code Online (Sandbox Code Playgroud)
但是当它将结果呈现给浏览器时,字符串变成了这个:
AdministerFiles/AdministerFiles/ViewDataFiles%3fcatid%3d14
Run Code Online (Sandbox Code Playgroud)
我该怎么解决这个问题?谢谢 .
当我在Windows Azure模拟器(开发环境)上运行Asp.Net MVC 2项目时,我遇到了下面提到的问题

我的web.config文件如下:
<httpRuntime maxUrlLength="4096" relaxedUrlToFileSystemMapping="true" maxQueryStringLength = "4096" requestValidationMode="4.0" />
Run Code Online (Sandbox Code Playgroud)
我的查询字符串URL如下:
注意:上面有1490 characters
我的控制器Action方法的重定向如下:
return RedirectToRoute("booking", new { action = "index", providerKey = providerKey, ownerKey = ownerKey, arguments = arguments, step = step });
Run Code Online (Sandbox Code Playgroud)
注意: arguments 具有以上查询字符串详细信息
如何摆脱这个错误页面?
.net azure asp.net-mvc-routing azure-web-roles asp.net-mvc-2
我一直在开发一个 MVC 4 应用程序,其中还包括通过 Jquery 的 Ajax。我遇到了一个问题。
例如,如果我单击一个按钮,onclick 事件将触发一个 javascript 方法。此方法位于 .js 文件中。
该 javascript 方法使用 Ajax 来调用ActionResult接收一些参数(字符串、整数)的方法,没什么特别的。所以..假设我的操作结果在“ Person”中Controller,它的名称是“ Add”。所以我想添加一个人。
我的 ajax 调用中的 url 属性应该是"/Person/Add",我的数据应该是这样的:
var person = new Object();
person.name = "John";
person.id = 1;
data: person
Run Code Online (Sandbox Code Playgroud)
当使用 Visual Studio 运行应用程序时,这不会出现任何问题。但是当我将它部署到 IIS 中时,我收到 404 错误。
我已经尝试过这个。我<link> <link id="PersonAddURL" href="Url.Content("~/Person/Add") />在布局中添加了 a ,然后没有使用而是url: "/Person/Add"将其更改为url: $("#PersonAddURL").attr("href")。
现在,这可行,我认为这不是解决它的好方法。应该还有另外一个更好的。即使我设法解决了这个问题,我仍然希望有人向我解释发生这种情况的原因。我不喜欢每个网址都有一个链接标签的想法。
感谢未来的答案。
我正在实现一个密码重置系统,虽然代码工作正常,但是对用户来说存在一个小问题.该系统通过生成通过电子邮件发送的一次性加密安全令牌来工作.问题是,要使用这些令牌,用户必须单击他们收到的电子邮件中的链接.这本身不是问题,但有问题的链接看起来像这样:
http://www.example.com/Account/ResetPassword/184?t=BC2EveZtRl3wjbONboalzlUVwUpp%252BYaiKvbsZ6aPPYE%253D
Run Code Online (Sandbox Code Playgroud)
用户不愿意点击此链接,因为它很大且看起来很吓人; 他们认为这是一个恶意的第三方窃取他们的密码或给他们一个病毒或东西的伎俩.
如果这是一个视图,我会用它@Html.ActionLink()来生成一个漂亮的<a>链接,上面写着"点击这里重置你的密码",这很好.但是,在一个控制器中,我无法访问该方法,除非我实例化一个HtmlHelper需要ViewData的东西,这导致需要实例化的整个链条以伪造一些我不会使用的东西,并且我看到的每个地方都说这是不好的做法,我不应该这样做.
<a>在ASP.NET MVC中,在控制器代码中生成整洁链接的最简洁方法是什么?
html hyperlink asp.net-mvc-routing asp.net-mvc-4 asp.net-core-2.0
我有一个我已经路由的asp.net mvc网站.我想要做的是从"/general.asp?id=102"到"/ MyNewPage"的301重定向.我有一个旧id的数据库表以及每个id的新页面.
我正在使用Routemagic来进行主重定向,并且它会很有效,直到你有查询字符串.(例如"/myoldpage.asp"到"/ mynewpage"效果很好)
我使用的代码是这样的:
Dim route = routes.MapRoute()
routes.redirect(Function (rt) rt.MapRoute(uniquestring, fromURL), true).To(route)
Run Code Online (Sandbox Code Playgroud)
如果旧URL中包含查询字符串,则会失败.
我如何进行像上面指定的重定向:"/general.asp?id=102"到asp.net MVC中的"/ MyNewPage"?
我需要在文件夹路径中获取图像是否存在.我使用以下代码:
bool isExists = System.IO.Directory.Exists(Server.MapPath(FolderPath + "Logo.png"));
Run Code Online (Sandbox Code Playgroud)
但是如果文件存在,bool变量返回false.
我正在使用MVC 4 VS 2012 Express for Web开发网站。通常,当我直接从视图中运行时,例如Home Controller中的Index View,我在URL地址栏上获得了“ http:// localhost:62335 / ”,但是现在我获得了http:// localhost:62335 / Views / Home /Index.cshtml
我不会在RouteConfig类上更改路由,如下面的代码所示
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况以及如何解决?
我正在尝试创建ASP.NET Core Web API.我有Post/Get方法,如下所示:
[HttpGet]
[Route("api/getProffessionByID/{id}")]
public IHttpActionResult getProffessionByID(Int64 id)
{
AllProffession model = new AllProffession();
try
{
var result = model.GetAllProffession.Where(i => i.id == id).FirstOrDefault();
return Ok(result);
}
catch (Exception ex)
{
return InternalServerError("Something Went Wrong : " + ex.ToString());
}
}
[HttpPost]
[Route("api/savePerson")]
private IHttpActionResult savePerson(PersonModel model)
{
try
{
if (model.name != string.Empty || model.weight != 0 || model.height != 0 || model.proffession != 0)
{
Guid guid = Guid.NewGuid();
Random random = new Random();
int i …Run Code Online (Sandbox Code Playgroud)