Tag: asp.net mvc 3

RazorGenerator,模板和@Html

我正在尝试使用RazorGenerator作为电子邮件模板引擎。 我想用数据模型,组装正确的部分视图集,并返回我可以通过电子邮件发送的HTML。 编辑:除了这个工作流程,任何解决方案都需要编辑为.cshtml文件,并能够编译成一个DLL 。 由于各种原因,自行部署cshtml文件是不切实际的 – 如果我们无法将所有剃刀视图嵌入到单个文件中,那么我们就无法使用该建议。 因此RazorGenerator。 到目前为止,我已经计算出它的每个部分,除了部分。 当我尝试在模板文件中使用@ Html.Partial()时,我得到: The name ‘Html’ does not exist in the current context 。 基于这个答案 ,我知道默认情况下@Html不是Razor的一部分,关于如何在控制器中创建HtmlHelper有很多答案。 但是,我需要在模板中创建一个模板,该模板没有我需要遵循这些示例的ControllerContext 。 我也尝试过使用@Include,但是RazorGenerator模板似乎不支持。 编辑:我还尝试创建一个inheritance自TemplateBase的新类,并复制了RazorTemplateBase所有function,但我在@Include行上得到了NullReferenceException 。 所以,我的主要问题是:是否有更好的方法将另一个Razor文件(带模型)包含到我的文件中? 其次,如果没有更好的方法,我怎样才能创建HtmlHelper? 编辑赏金:重申一下,在可接受的答案中我需要的四件事是: 使用标准编辑器编辑.cshtml文件的能力(不“将其存储为字符串”等) 能够将所有内容编译成单个dll,可以使用我们当前的构建系统进行部署(我们无法部署大量单独的.cshtml) 能够从另一个引用一个.cshtml文件,并传递一个模型 – 相当于@Includes或@Html.Partial (如果它们工作的话,其中任何一个都是完全可以接受的) 使用附件通过电子邮件发送结果的function。 (如果结果是字符串或可以转换为一个字符串,我已经有了这个代码。) 我目前可以获得其中三种组合的大多数组合,但我不能同时获得所有四种组合。 我愿意接受新的库,取代RazorGenerator,或者抛弃我已有的任何部分,只要结果能够按需要运行。

ASP.NET-MVC3中“自我validation模型”中的客户端validation

这是这个问题的后续问题: DataAnnotations如何在MVC中真正起作用? 有一个示例自定义validation,并提到了“自我validation模型”。 这很有意思,但我不明白如何为它编写客户端validation。 我的模型对象可以实现IClientValidateble接口(或仅用于dataannotation属性吗?),我想看一个如何做的例子。 编辑:根据我的理解,“自我validation模型”在不使用DataAnnotations的情况下工作,并在类中声明了我正在validation的属性的validation逻辑,并且它(不一定)使用属性来validation某些东西。 我在自定义客户端validation中看到的所有示例都是关于实现IClientValidatable的dataannotation 属性 。 当我在我的类中声明我的validation逻辑时,我不使用属性来validation模型状态。 当我在实现IValidatebleObject接口的模型类的Validate方法中声明我的validation逻辑时,如何编写客户端validation? 我实际上传递给视图的类可以实现IClientValidatable接口或类似的东西吗?

获取Web应用程序程序集名称,而不管当前正在执行的程

是否可以从引用的程序集中获取ASP.NET Web应用程序的程序集名称? Assembly.GetEntryAssembly在桌面和控制台应用程序中运行良好,但它似乎在Web应用程序中始终为null,而GetExecuting \ GetCalling可能会返回我引用的程序集,而不是Web应用程序中的程序集。 很长的解释: 我编写了一个自定义设置提供程序 ,它不是从应用程序配置文件中读取配置,而是从集中配置服务获取设置。 自定义提供程序位于单独的程序集中,因此可供不同的应用程序使用。 需要使用应用程序程序集名称覆盖ApplicationName属性。 使用提供程序的方法是.net自定义属性 ,因此我无法向其发送任何参数。 由于没有Assembly.Get *汇编方法似乎有效,我唯一能想到的就是要求使用app应用程序名称进行appSetting,但我对此并不满意。 感谢任何帮助,谢谢!

如何更新Entity Framework中的相关实体

我有一个MVC项目,并为数据库使用Entity Framework Code First和POCO对象。 例如: public class ClassA { public int? Id {get; set;} public string Name { get; set;} public virtual ClassB B {get; set;} } public class ClassB { public int? Id {get;set;} public string Description {get;set;} } 我有一个ActionResult,可以创建或编辑模型。 问题是当我调用此ActionResult来更新模型,并且model.B已更改时,关系不会保存在数据库中。 当调用ActionResult来创建一个新对象时,它按预期工作。 我该如何解决这个问题? public ActionResult Save(ClassA model) { model.B = GetBFromDb(model.B.Id.Value); if(ModelState.IsValid) { if […]

entity framework:复合键的字段不能为空?

我有一个带有复合键的模型 – 行是关键: public class Item { [Key, Column(Order = 0)] public int UserId { get; set; } [Key, Column(Order = 1)] public DateTime? Date { get; set; } } 运行下面的代码会抛出exceptionDbEntityValidationException并带有消息: The Date field is required. : var it = new Item { Date = null, UserId = 2 }; m_Entities.Items.Add(it); m_Entities.SaveChanges(); // throws exception […]

如何格式化MVC3中TextBoxFor()显示的DateTime?

我安装了ASP.NET MVC3。 我需要带有格式化日期的datepicker。 我尝试了这个,但它不起作用(当传递“{0:dd / MM / yyyy}”作为格式参数时,它仍然没有格式化): private static MvcHtmlString FormattedDateTextBoxFor(this HtmlHelper htmlHelper, Expression<Func> expression, string format, RouteValueDictionary htmlAttributes) { var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); if (metadata.Model != null && metadata.Model as DateTime? != null) htmlAttributes.Add(“value”, string.Format(format, (DateTime)metadata.Model)); return htmlHelper.TextBoxFor(expression, htmlAttributes); } 编辑:如果格式为“{0:dd-MM-yyyy}”,我的代码可以工作,但不仅仅是“{0:dd / MM / yyyy}” 我知道MVC4已经有了这个function,但不幸的是我的项目是在MVC3上编写的。 你能帮助我吗?

AssemblyBinding BindingRedirect不适用于带有T4MVCExtensions的MVC4应用程序

我们有一个使用T4MVC的大型.NET Web应用程序MVC3。 我们最近将它升级到了MVC4,除了T4MVCExtensions(来自NuGet的版本3.6.5)仍然依赖于System.Web.Mvc版本3之外一切都很好。你应该在web.config中设置的运行时依赖项应该是应该的重定向程序集绑定,但它们似乎不是。 发生以下exception: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception […]

访问javascript文件中的Model属性?

是否可以访问外部Javascript文件中的Model属性? 例如,在“somescript.js”文件中 var currency = ‘@Model.Currency’; alert(currency); 在我的观点上 这似乎不起作用,但是如果我将javascript直接放入脚本标记内的视图中,那么它确实有用吗? 这意味着必须始终将代码放在页面中,而不是像下面这样加载外部脚本文件: @model MyModel; var currency = ‘@Model.Currency’; alert(currency); 有没有办法解决?

如何在ASP.NET MVC中进行测试时访问JsonResult数据

我在C#mvc控制器中有这个代码: [HttpPost] public ActionResult Delete(string runId) { if (runId == “” || runId == null) { return this.Json(new { error = “Null or empty params” }); } try { int userId = (int)Session[“UserId”]; int run = Convert.ToInt32(runId); CloudMgr cloud = new CloudMgr(Session); cloud.DeleteRun(userId, run); return this.Json(new { success = true }); } catch (Exception ex) […]

请求失败,HTTP状态为401:未经授权的SSRS

我的应用程序在用C#编码的Asp.Net MVC3中,我在Visual Studio 2008中的SQL Server Business Intelligence Developement Studio中有一个SSRS解决方案,我通过我的Asp.Net MVC3应用程序调用SSRS报告。 几天前我的应用程序运行正常,但突然我收到如下错误: 我的错误: The request failed with HTTP status 401: Unauthorized. 我的尝试 我的SSRS报告部署在我的local server 。 我在SSRS报告解决方案的数据源中正确设置了我的凭证。 我试图在我的web.config中添加标签 我尝试添加IReportServerCredentials reportCredentials = new ReportServerCredentials(“MyUserName”, “MyPassword”, “ServerName”); 我将Visual Studio作为’Run as Administrator’身份’Run as Administrator’ 。 我尝试了此链接中提到的解决方案使用RegEdit创建密钥 更新我尝试了以下解决方案,但结果相同: SSRS中的未经授权的错误 上述解决方案都没有奏效,但是当我在其他机器上运行相同的解决方案时,解决方案运行良好并且没有显示错误。 它只有当我从我的机器运行解决方案然后我得到错误The request failed with HTTP status 401: Unauthorized.