Tag: html helper

ASP.net MVC文件上传到Amazon S3并取得进展

美好的一天, 我有一个ASP.net MVC应用程序需要上传文件到Amazon S3。 我找到了一个叫做Flajaxian的简洁控件,可以很好地完成工作。 问题是,现在我想将一行数据插入到跟踪上传的数据库中。 如果查看下面的代码,控件会有一个FileUploader1_ConfirmUpload事件,该事件在上载完成后触发。 Url.Action(“上传”,“TracksController”)不能达到我想要的效果,这会触发TrackController控制器中的上传操作。 这是我第一次使用MVC,所以我希望有一个简单的解决方案。 我最初有一个提交按钮来执行上传代码,如此 。 但现在上传是异步的,所以我想做同样的回发 感谢所有花时间阅读本文的人,以及那些试图解决它的人。 private void FileUploader1_FileNameDetermining(object sender, FileNameDeterminingEventArgs e) { e.FileName = SessionWrapper.PersonId.ToString() + “_” + e.FileName; } private void FileUploader1_ConfirmUpload(object sender, ConfirmUploadEventArgs e) { Url.Action(“Upload”, “TracksController”); } 好的,所以我试图从昨天的上面改变我的方法。 我没有尝试触发TracksController的Action,而是想将Action代码移动到Confirm_Upload事件中。 但现在我仍然需要获取文本框的值。 因为MVC不记得状态,所以certificate是困难的。 这是textBoxes。 它们与上面的代码在同一页面上。 Artist Song Title 是否可以提取文本框的值并将其发送到服务器端发生的Confirm_Upload事件? 如果没有服务器代码那么可能是JavaScript客户端? 我正在使用的上传控件是唯一一个令人兴奋的我想要的,但它是Web表单,该站点是MVC。 所以我在mvc页面上有一个web表单控件。 我想使用MVC文本框值并将其传递给Web窗体控件进行处理。

Helper方法生成小型HTML代码段

我正在使用ASP.NET MVC将我的HTML视图与我的模型分开。 然而,有一个特定的情况令我感到困惑。 我有几个常用的小面板信息,它们本身由一些较小的信息板组成。 这些数据来自各种模型中包含的子类,有时是单个实例,有时是对象列表。 目前,这是使用部分视图完成的,通过模型参数传递适当的数据,如下所示: @Html.Partial(“UserInfo”, this.Model.CurrentUser); @Html.Partial(“UserInfo”, reply.PostedBy); 等等。 一切正常。 我最近达到了一个要求,感觉它延伸了这个模型的明显限制 – 但它将涉及非常大量的部分视图,每个部分视图中有少量的HTML,嵌套了很多次。 页面解析时间似乎开始有点失控,我怀疑搜索和反映部分视图的数量可能与它有关。 请注意:我假设重复的HTML应该是相同的仍然是要避免的。 我可以通过在一些更高级别的控件中使用HTML副本来简化嵌套,但是这会让我觉得这会损害可维护性。 对于最内层的人来说,创建生成并返回所需HTML的静态帮助程序类似乎更有意义 – 但是,尽管事实上MVC本身使用Html帮助程序类,但感觉这与MVC相反图案。 是否可以使用静态帮助程序类生成小型HTML代码段? 静态UserInfo类应该去哪里? 看法? 控制器? 别处? 显然,这种方法仍然将辅助方法与模型分开,但是由于需要使用模型,我并不真正看到它实际上是如何解耦的。 静态助手是一种远离扩展方法的头发宽度,可以在userInstance.InfoHtml()类型的方式中使用,这似乎使整个方法非常类似于仅将辅助方法添加到模型中。 这当然是MVC首先想要摆脱的! 请注意:我不是想绕过规则或抱怨! 我只想尽可能地将其视为“on pattern”。 如果有很多很多局部视图的话,我会尽我所能坚持这个和性能调整。

HtmlTable和TagBuilder之间的区别(“表”)

只是想知道这两者之间的区别是什么,当我在HtmlHelper中构建表时,它们中的一个或另一个的好处是什么 HtmlTable table = new HtmlTable(); 和: TagBuilder table = new TagBuilder(“table”); 这和这个问题大致相同, 为什么使用TagBuilder而不是StringBuilder? 但我更想知道这两者之间的区别。

如何将lambda传递给Razor辅助方法?

我有一个razor助手方法需要接受一个Func ,它将返回一些HTML内容打印出来。 这是我原来的: @helper node(string title, Func descriptions) { …. @descriptions() …. } @node(“title”, new Func(() => { return new HelperResult( @ “desc1” “desc2” ); })) 不幸的是,我的文字永远不会打印出来。 也没有错误。 所以我学习了内联帮助器,并将调用方法更改为: @node(“title”, @ “desc1” “desc2” ) 但是现在我收到编译错误说 “委托’System.Func’不接受1个参数”。 但我不是在传递任何论点。 因此,如果我将其更改为Func然后使用@descriptions(null)调用它,我会收到以下错误: “如果没有先将lambda表达式转换为委托或表达式树类型,则不能将lambda表达式用作动态调度操作的参数” 我确定我的某些地方出了问题,但我不确定它是什么。 编辑 :我想我可能已经解决了这个问题,但它引入了一些其他问题。 我做的是在传递给动态方法之前施放lambda。 我猜这就是错误试图说的: @node(“title”, ((Func)(@ “desc1” “desc2” )) 这有效,它可以正确打印出span标签。 不幸的是,我必须在调用此Func时传入一​​个无用的参数。 现在我遇到的问题是我的真正function不仅仅是写一些跨度。 它更像是这样的: @node(“title”, ((Func)(@ […]

如何读取html帮助元素的名称

在mvc中是否有机会读取将被分配给html控件的名称? 例如,我使用此代码: @Html.LabelFor(x => x.Name) @Html.TextBoxFor(x => x.Name) @Html.ValidationMessageFor(x => x.Name) @Html.HiddenFor(x => x.Id) I want to display here a TextBox name 我想得到一个输入名称的名称。 此代码是局部视图的片段。 元素名称看起来像children [1] .Name

ASP.Net MVC ModelState / Html.TextBox回发问题

我有一个问题出现在我试图发布的表格中。 在表单未validation的情况下,我采用调用ModelState.AddModelError()的标准路由,然后返回View结果。 问题是,HTML。*助手应该在渲染时获取已发布的值,并且我注意到我的文本字段仅在我将其包含在回发操作的参数列表中时才这样做,这不应该是必需的看到某些表单有太多的字段想要将它们全部列为参数。 我的操作代码大致是: [AcceptVerbs(HttpVerbs.Post)] public ActionResult EditDataDefinition(long? id, string name) { var dataDefinition = … // do some validation stuff if (!ModelState.IsValid) { // manually set checkbox fields via ViewData seeing as this STILL doesn’t work in MC 1.0 😛 // … return View(dataDefinition); } } 现在,dataDefinition(这是一个LINQ to SQL实体)有一个MinVolume字段,在这一行的视图中处理: Minimum: 然而,当在ModelStatevalidation失败后呈现视图时,在我们发布的原始页面上输入的值不会被保留,除非我将它作为参数包含在回发方法中。 从字面上看,我可以通过这样做来“解决问题”: [AcceptVerbs(HttpVerbs.Post)] public […]

如何从对象列表创建MVC HtmlHelper表

我正在尝试创建一个特定的HtmlHelper表扩展,以减少我的视图中的意大利面条代码。 获取域对象列表我想显示一个表,它在使用域对象的属性作为列时更加智能。 另外,我想禁用一些属性作为列显示。 一个想法是用属性来装饰属性,告诉它不被显示。 希望这是有道理的,但到目前为止我到达的地方…… public static string MyTable(this HtmlHelper helper, string name, IList items, object tableAttributes) { if (items == null || items.Count == 0) return String.Empty; StringBuilder sb = new StringBuilder(); BuildTableHeader(sb, items[0].GetType()); //TODO: to be implemented… //foreach (var i in items) // BuildMyObjectTableRow(sb, i); TagBuilder builder = new TagBuilder(“table”); builder.MergeAttributes(new RouteValueDictionary(tableAttributes)); builder.MergeAttribute(“name”, […]

下载mvc3编辑表单

这可能很简单,但我似乎无法自己解决。 我创建了一个简单的数据库和实体模式,看起来像这样 我正在尝试创建一个允许我添加新订单的创建表单。 我总共有3个表,所以我要做的是让表格允许此人输入订单日期,还有一个下拉列表,允许我从产品表中选择产品 我希望能够创建一个Add或Edit视图,允许我将OrderDate插入OrderTable,并将OrderID和选定的ProductID插入OrderProduct。 我需要在这做什么步骤。 我创建了一个OrderController并勾选了“Add Actions”,然后添加了一个看起来像这样的Create View @model Test.OrderProduct @{ ViewBag.Title = “Create2”; } Create2 @using (Html.BeginForm()) { @Html.ValidationSummary(true) OrderProduct @Html.LabelFor(model => model.OrderID) @Html.EditorFor(model => model.OrderID) @Html.ValidationMessageFor(model => model.OrderID) @Html.LabelFor(model => model.ProductID) @Html.EditorFor(model => model.ProductID) @Html.ValidationMessageFor(model => model.ProductID) } @Html.ActionLink(“Back to List”, “Index”) 这将创建包含OrderID和ProductID的文本框但不包含日期的视图。 我的控制器CreatePost还没有改变 [HttpPost] public ActionResult Create(FormCollection collection) { try { […]

强类型视图中多模型表示的模型绑定

我在提交多个模型的表单上遇到问题。 我有一份投诉表格,其中包括投诉信息以及一对多投诉人。 我正在尝试提交表单,但我在绑定上遇到错误。 ModelState.IsValid始终返回false。 如果我调试并查看ModelState错误,我会得到一个说法:“EntityCollection已经被初始化。应该只调用InitializeRelatedCollection方法来在对象图的反序列化期间初始化一个新的EntityCollection”。 此外,在调试时,我可以看到投诉模型确实从表单提交中填充了投诉人,因此看起来该部分正在运行。 我不确定使用默认的ModelBinder我是不是可以做什么,或者我是不是以正确的方式去做。 我似乎无法找到任何具体的例子或文件。 这里可以在stackoverflow上找到一个非常类似的问题,但它似乎没有处理强类型视图。 控制器代码: public ActionResult Edit(int id) { var complaint = (from c in _entities.ComplaintSet.Include(“Complainants”) where c.Id == id select c).FirstOrDefault(); return View(complaint); } // // POST: /Home/Edit/5 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(Complaint complaint) { if (!ModelState.IsValid) { return View(); } try { var originalComplaint = (from c in […]

使用generics创建HtmlHelper扩展方法

我对创建generics方法并不熟悉,所以我想我会把这个问题提交给社区,看看会有什么回来。 它甚至可能不是generics的有效使用! 我想创建一个HtmlHelper扩展方法,我可以指定该方法是某种类型。 我将该类型的实例和TagBuilder对象的实例传递给该方法。 然后我将标记的class属性指定为我传入的对象的类型,并将所有对象的属性序列化为标记的属性。 编辑…这样做的好处是我可以轻松地将我的Html元素序列化为javascript对象,以便jQuerying到服务器和模型绑定,以及为类型指定样式的能力…结束编辑 此代码示例可能会澄清。 我有这样的类型: public class MyType { public int Prop1 { get; set; } public int Prop2 { get; set; } public MyType(int val1, int val2) { this.Prop1 = val1; this.Prop2 = val2; } } 我在想的是生成一个帮助方法,可能有类似这样的签名: public static string GetTag(this HtmlHelper h, object myType, TagBuilder tag) { // cast myType […]