Tag: asp.net mvc 3

是否有可能在ASP.NET MVC路径到达控制器之前更改它的querystring变量?

我在ASP.NET MVC中有一个控制器方法,如下所示: public ActionResult GetAlbumPictures(int albumId) { var album = AlbumRepo.GetSingle(albumId); var pictures = album.Pictures; return View(pictures); } 此方法的路由如下所示: routes.MapRoute(null, “pictures” new { controller = “Album”, action = “GetAlbumPictures” }); 用户将使用以下URL获取图片,按照相册ID进行过滤: GET http://server/pictures?albumid=10 但是,我想将querystring参数更改为album而不是albumid : GET http://server/pictures?album=10 这意味着需要将控制器方法修改为: public ActionResult GetPictures(int album) { … } 但是,这并不理想,因为现在该方法有一个名为album的参数,可以将其混淆为Album 对象而不是Album的ID 。 我的问题是,有没有办法配置ASP.NET MVC,以便在路由中,它将收到一个名为album的查询字符串参数,但然后将其作为albumId参数传递给控制器​​? PS我知道我可以在路由表中执行此操作: routes.MapRoute(null, “album/{albumId}/pictures”, new { […]

如何在c#mvc中跨多个子域保持会话?

一个购物车应用程序我正在从正常页面进入提交您的详细信息页面时跳转域。 简而言之,部署了两个应用程序副本:一个服务器用于“主”站点,一个服务器具有运行在https上的ev证书,用于客户详细信息(包括付款;这是PCI合规性问题)。 我的问题是: 从http://shop.domain – > https://secure.domain跳转 (如果用户浏览后退回),我该如何保留会话? 使用JSONP传递cookie跨越域是微不足道的,但我不知道如何处理远程端的“重新连接”会话。 我已经阅读了有关滚动您自己的自定义会话提供程序等的各种事情,但我还没有找到一个不仅仅是通用建议; 当然没有关于如何使用它来重新加入会话的示例。 这是一个MVC3 c#网络应用程序。

使用C#和MVC3的HttpFileCollectionBase问题上传多个文件

我创建了一个保存文件的控制器。 以下代码是该控制器的一部分: if ( Request.Files.Count != 0 ) { HttpFileCollectionBase files = Request.Files; foreach ( HttpPostedFileBase file in files ) { if ( file.ContentLength > 0 ) { if ( !file.ContentType.Equals( “image/vnd.dwg” ) ) { return RedirectToAction( “List” ); } } } } 在ASPX页面很简单: …// many inputs type file 问题是foreach因为它返回一个错误(我知道因为我在调试模式下运行并在foreach语句中放置了断点): Unable to cast object of […]

ASP.NET MVC3代码优先错误 – 尝试更新实体

我已经检查了这个问题 ,它似乎与我需要的东西有关,但并没有完全回答。 我有一个实体(Sql Compact使用EF Code First通过MVC3-如果标题不清楚的话)“问题”(通用问题跟踪,只是为了我自己的教育理解MVC3如何工作)。 Issue类具有CreatedBy属性(对创建问题的用户的Int引用)和CreatedDate属性(DateTime)。 当我使用scaffolded代码进行更新时(仅修改以防止某些更新的日期字段被用户修改): if (ModelState.IsValid) { issue.LastActivity = (DateTime?)DateTime.Now.Date; if (issue.ClosedBy != null) issue.ClosedDate = (DateTime?)DateTime.Now.Date; startingIssue = null; db.Entry(issue).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction(“Index”); } 我收到链接问题中提到的错误(将datetime2数据类型转换为日期时间数据类型等等) 当我单步执行代码时,看起来我的CreatedBy和CreatedDate属性不包含在控制器传递的issue实例中。 当我尝试通过从数据库中获取问题的另一个副本并将其更新为值来解决此问题时: var startingIssue = db.Issues.Find(issue.IssueId); if (ModelState.IsValid) { if (issue.CreatedBy != startingIssue.CreatedBy) issue.CreatedBy = startingIssue.CreatedBy; if (issue.CreatedDate != startingIssue.CreatedDate) issue.CreatedDate = startingIssue.CreatedDate; […]

当使用iis express时,没有在远程PC上应用css

我想在开发过程中从远程PC上使用我的asp.net mvc站点。 因此,我将其配置为使用IIS Express。 首先,Windows身份validation引发了一个问题。 我的网站应该在Windows域内网中工作,所以我想使用集成的Windows身份validation。 我设法使用如何:Firefox和 IIS Express Windows身份validation中的 集成Windows身份 validation (由bees73回答)使其在Firefox上运行。 但IExplorer仍然要求打印登录名/密码,即使我在本地打开它,指定我的ip而不是localhost。 IE的问题仍然没有得到解决,但是如果我在我的凭据中打印,它确实在本地工作。 我的问题是:当我在远程PC上打开我的网站时(两者都在firefox中(无需打印登录/密码)和IE(我必须打印login’n’password))我的页面在不应用样式的情况下呈现。 看起来没有CSS可用。 但我没有任何错误。 在加载页面的源代码中,我确实有行 但是当我试图看到Site.css时,它说有一些内部服务器错误。 我想我没有正确配置IIS Express,这就是问题所在。 如果没关系,集成的Windows身份validation必须工作,而不是在IE上询问登录和密码,至少我猜。 所以,我的配置: 该项目本身 – 以IIS Express,Windows身份validation – 开启,匿名关闭。 netsh http add urlacl url = http:// myip:myport user = domainname \ mylogin netsh http add iplisten ipaddres = myip 在applicationhost.config中 : 绑定: validation: … […]

如何避免在视图中循环?

当我构建我的视图时,我想尽可能多地消除处理逻辑。 理想情况下,我想坚持使用Razor只使用HTML和渲染值。 假设我有一个带有BarModel对象列表的FooModel: public class FooModel { public List Bars { get; set; } public string FoosFirstValue { get; set; } public string FoosOtherValue { get; set; } } public class BarModel { public string SomeValue { get; set; } public string SomeOtherValue { get; set; } } 在我看来,我需要遍历并显示我的Bars上的元素: @model MyApp.FooModel @Model.FoosFirstValue @Model.FoosOtherValue Bars: @foreach […]

将局部视图加载到模态弹出窗口中

我正在使用MVC3 c#4.0。 我创建了一个局部视图。 我的页面上有一个按钮,当我单击此按钮时,我希望能够将局部视图加载到模态弹出窗口中。 我认为最好的方法是通过javascript – 我已经在应用程序中使用jQuery。 有关如何做到这一点的任何指示?

在cshtml razor视图中分离JavaScript

我是ASP.NET / MVC3的新手,我正在试图弄清楚如何将我的JavaScript(包含C#)与HTML的其余部分分开。 如果我将它们放入.JS文件并使用脚本标记插入它们,那么它们的C#方面就会停止工作。 在MVC 3 razor中分离包含C#代码的JavaScript代码的最佳方法是什么? 谢谢。

MVC3 RedirectToAction在post方法和ViewBag抑制中

我目前正在处理一个数据列表,我需要在一个视图中显示一个列表,并为每个项目显示可以执行的相应操作,例如编辑或删除它们。 对于版本,没有任何问题,这是一个特殊的观点。 我的问题是当我想删除一个项目时,我在post方法中有两个选择。 //Call directly the list [HttpPost] [Authorize] public ActionResult Delete(int itemId) { // logic to delete an item ViewBag.Error = “”; // The result of the execution return List(); } 这个解决方案的问题是url不再与第一个相同:… / List,它是… /现在删除,我发现这个解决方案不太好,另一个解决方案是重定向到动作,现在url很好,但viewBag中的错误信息不再可见,你们有更好的主意吗?

如何让Html.CheckBoxFor()在字符串字段上工作?

我正在使用带有Razor和C#的ASP.NET MVC3。 我正在制作各种表单构建器,所以我有一个具有以下对象集合的模型: public class MyFormField { public string Name { get; set; } public string Value { get; set; } public MyFormType Type { get; set; } } MyFormType只是一个枚举,告诉我表单字段是复选框,文本框,文件上传,还是其他什么。 我的编辑器模板看起来像这样(请参阅注释): 〜/查看/ EditorTemplates / MyFormField.cshtml @model MyFormField @{ switch (Model.Type) { case MyFormType.Textbox: @Html.TextBoxFor(m => m.Value) case MyFormType.Checkbox: @Html.CheckBoxFor(m => m.Value) // This does not […]