我是ASP.Net MVC的新手.我刚刚在Visual Studio 2010中创建了一个MVC3项目.视图引擎是剃须刀.当我刚运行应用程序时,它在浏览器中给出了正确的结果.URL为http:// localhost:4163 /.然后我将"设置为起始页"应用于〜\ Views\Home文件夹中的Index.cshtml.然后当我运行应用程序时,url变为 http:// localhost:4148/Views/Home/Index.cshtml ,它说无法找到资源.我该怎么做才能纠正它?网址映射在哪里完成?
Global.asax文件:
using System.Web.Mvc;
using System.Web.Routing;
namespace TEST
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个MVC 3 Web应用程序.我想在我的实体类上使用Data Annotations,然后在回发到服务器之前使用不显眼的客户端验证.这在定期发布时工作正常.如果任何字段无效,我会得到验证和验证摘要.但是,我想通过ajax和json回发信息.如何首先在客户端"手动"验证表单,然后将我的ajax发布回服务器.以下是我的代码的摘要版本.
public class Customer
{
[Required(ErrorMessage = "The customer's first name is required.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "The customer's last name is required.")]
public string LastName { get; set; }
}
<% using (Html.BeginForm()) { %>
<%: Html.LabelFor(model => model.FirstName, "First Name")%>
<%: Html.TextBoxFor(model => model.FirstName, new { @class = "TextBox", id = "Customer.FirstName" })%>
<%: Html.ValidationMessageFor(model => model.FirstName, "*")%>
<%: Html.LabelFor(model => model.LastName, "Last Name")%>
<%: Html.TextBoxFor(model => model.LastName, new { …Run Code Online (Sandbox Code Playgroud) 在ASP.NET MVC的时候我的行动将不会返回任何东西我使用return new EmptyResult()
或return null
有什么不同吗?
我在网站上有一个部分,我在灯箱里面显示一个pdf.最近的Chrome升级打破了这个显示:
错误349(net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION):收到多个Content-Disposition标头.这是不允许的,以防止HTTP响应分裂攻击.
这仍然可以在IE中正常工作.
我在IIS6上使用ASP.NET MVC3
我用来生成文件的代码如下.
如果我删除内联语句,则文件会下载,但会破坏灯箱功能.
问题代码
public FileResult PrintServices()
{
//... unrelated code removed
MemoryStream memoryStream = new MemoryStream();
pdfRenderer.PdfDocument.Save(memoryStream);
string filename = "ServicesSummary.pdf";
Response.AppendHeader("Content-Disposition", "inline;");
return File(memoryStream.ToArray(), "application/pdf", filename);
}
Run Code Online (Sandbox Code Playgroud)
修复
去掉
Response.AppendHeader("Content-Disposition", "inline;");
Run Code Online (Sandbox Code Playgroud)
然后改变
return File(memoryStream.ToArray(), "application/pdf", filename);
Run Code Online (Sandbox Code Playgroud)
至
return File(memoryStream.ToArray(), "application/pdf");
Run Code Online (Sandbox Code Playgroud) 是否可以从MVC应用程序中的javascript文件执行以下操作?
$(function(){
alert(@ViewBag.someValue);
}
Run Code Online (Sandbox Code Playgroud)
目前它抛出错误:
引用未定义的XML名称@ViewBag
我想上传图片,它在我的机器上工作正常,但当我把我的网站放在IIS7服务器上公开时,我无法上传任何内容.
请求过滤模块被配置为拒绝超过请求内容长度的请求.
在Web服务器上配置请求筛选以拒绝请求,因为内容长度超过了配置的值.
验证applicationhost.config或web.config文件中的configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength设置.
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576" />
</requestFiltering>
</security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
如您所见,我将maxAllowedContentLength设置为1gb.重新启动我的网站仍然收到此错误.我/uploads/在我的文件系统上创建了一个文件夹,它也是如此.不知道导致此错误的原因以及无法上传图片的原因.
我正在使用剃刀引擎制作ASP.NET MVC应用程序.
我想知道是否可以在视图中使用区域.
就像是:
#region blabla
<p>@Model.Name</p>
<p>...</p>
#endregion
Run Code Online (Sandbox Code Playgroud)
这不起作用.还有其他选择吗?
我在ASP.NET MVC中看到了两种使用会话数据的方法:
System.Web.SessionState.HttpSessionState,可用 HttpApplicationSystem.Web.HttpSessionStateBase,可用 Controller存储在一个中的数据似乎在另一个中可用.
不幸的是System.Object,这两种类型的唯一共同祖先是,这意味着我不能为任何一种抽象创建可重用的实用程序代码.
为什么API会这样?我失踪的两者之间是否有重要区别?
我很难理解[Authorize]ASP.NET MVC 中属性的实际使用.根据概念,如果我们使用[Authorize]属性修饰控制器方法,则只允许经过身份验证的用户访问控制器.
我开发了一个ASP.NET MVC应用程序,没有用[Authorize]属性装饰控制器.我观察到的是,如果我使用web.config或其他方式在我的应用程序中正确实现身份验证机制,那么我现在可以访问{controller}/{action}/{id}特定操作方法的URL .
系统总是要求登录.这意味着我的控制器是安全的.我的问题是,当我可以在不使用[Authorize]属性的情况下保护我的控制器时,它的真正需求是什么?
我们使用NewRelic来提供服务器端应用程序跟踪.
我们注意到我们的一些应用程序始终在该方法中花费大约100毫秒System.Web.Mvc.MvcHandler.BeginProcessRequest().
出现这种情况的任何自定义控制器代码调用之前(这是单独记录,而不是累积) - 这不是显而易见的,为什么会在这种方法中花费这么多的时间.
MVC在这种方法中会做些什么?这可能只是请求排队吗?
[编辑:] 如怀疑 - Scalayer的回答是现实的.我们删除并优化了所有会话依赖关系,并看到了应用程序可伸缩性和稳定性的大幅提升
asp.net-mvc-3 ×10
asp.net-mvc ×5
asp.net ×4
razor ×3
c# ×2
jquery ×2
.net ×1
action ×1
iis ×1
iis-6 ×1
iis-7 ×1
javascript ×1
newrelic ×1
region ×1
validation ×1
views ×1