标签: html-helper

在输出为json之前过滤模型的属性

嘿伙计们,我需要输出我的模型作为json,一切都很顺利.但是,某些属性需要通过一些辅助方法过滤它们来"美化",例如number_to_human_size.我该怎么做呢?

换句话说,说我有一个属性命名bytes,我想通过它传递number_to_human_size,并有结果输出到JSON.

如果可能的话,我还想'修剪'输出为json的输出,因为我只需要一些属性.这可能吗?有人可以举个例子吗?我真的很感激.

初步搜索结果提示某些事情as_json,但我无法找到与我的情况有关的实际例子.如果这真的是解决方案,我真的很感激一个例子.

研究:似乎我可以使用to_json的选项明确说明我想要哪些属性,但是我仍然需要在输出之前通过传递一个帮助器来弄清楚如何"美化"或"过滤"某些属性作为json.

我会为单个json模型创建一个部分,所以_model.json.erb,然后为我正在使用的动作创建另一个,并在其中简单地使用对象集合渲染部分?看起来像一堆箍跳过.我想知道是否有更直接/原始的方式来改变模型的json表示.

json html-helper ruby-on-rails

3
推荐指数
1
解决办法
3684
查看次数

从model中为datepickerfor(model => model.date)创建自定义Html帮助器

我正在为我的datepicker创建自定义html帮助器.
我想传递内部模式,因为它是TextBoxFor(model => model.name)

所以我需要的是,但我不知道该怎么做

  1. 该字段的名称
  2. 该领域的价值

我创造了

public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TProperty>> expression){

//return object.name
var expressionText = ExpressionHelper.GetExpressionText(expression);


}
Run Code Online (Sandbox Code Playgroud)

html-helper asp.net-mvc-2

3
推荐指数
1
解决办法
1279
查看次数

如何在html帮助器中使用asp.net mvc 3 razor进行内联样式

我想做这个

@Html.TextBoxFor(x => x.BackgroundColor, new { style = "width: 20px; background-color: @Model.BackgroundColor;" })
Run Code Online (Sandbox Code Playgroud)

然而,它不会呈现我的Mode.Background颜色(在firebug中我只看到@ bModel.BackgroundColor").这可能吗?

c# asp.net-mvc html-helper razor asp.net-mvc-3

3
推荐指数
1
解决办法
2万
查看次数

ASp.NET MVC 3.0调用泛型扩展html辅助方法时出错

我有一个像这样的扩展方法:

namespace System.Web.Mvc.Html
{
    public static class HtmlExtensions
    {
        public static T GetEnumValue<T>(this HtmlHelper helper, int value) where T : struct, IConvertible
        {
            return EnumHelper<T>.GetEnumValue(value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在Razor View上调用这个方法(该方法的自动完成工作,它在视图中可见),但是我收到错误:

@Html.GetEnumValue<MyEnumHere>(1) //Getting error here
Run Code Online (Sandbox Code Playgroud)

错误: Cannot convert method group 'GetEnumValue' to non-delegate type 'object'. Did you intend to invoke the method?

如果我这样 - 在编译期间没有错误:

Html.GetEnumValue<MyEnumHere>(1) //but in that case didnt get data to display.
Run Code Online (Sandbox Code Playgroud)

如果说谎的话,在编译期间也不会出错

 @{
     Html.GetEnumValue<MyEnum>(1); //But then I am getting error during execution  
 }
Run Code Online (Sandbox Code Playgroud)

错误: No …

html-helper asp.net-mvc-3

3
推荐指数
1
解决办法
2110
查看次数

从模型元数据中解析元数据displayname?

我已经使用附加参数进行了标签扩展,但是当我使用ViewData.ModelMetadata.DisplayName时,我没有从模型上的Diaplsy属性中获取显示名称?

我的模型有这样的用户名

    [Display(Name = "User name")]
    public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)

并像这样使用

@Html.LabelFor(m => m.SetupModel.UserName, @<span>No fancy characters mmkay?</span>)
Run Code Online (Sandbox Code Playgroud)

用这个html助手

    public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> ex, Func<object, HelperResult> template, string labelText = null) {
        var htmlFieldName = ExpressionHelper.GetExpressionText(ex);
        var metadata = htmlHelper.ViewData.ModelMetadata;
        string resolvedLabelText = labelText ?? metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
        if (String.IsNullOrEmpty(resolvedLabelText)) {
            return MvcHtmlString.Empty;
        }

        var tag = new TagBuilder("label");
        tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
        tag.InnerHtml = string.Format(
            "{0} {1}",
            resolvedLabelText,
            template(null).ToHtmlString()
        );
        return …
Run Code Online (Sandbox Code Playgroud)

c# html-helper asp.net-mvc-3

3
推荐指数
1
解决办法
4587
查看次数

如何在自定义帮助程序中使用Html.BeginForm?

因此,我试图将.cshtml视图中的此剃刀语法转换为.cs中的帮助程序扩展名。Darin在此发表了一篇很棒的文章:https : //stackoverflow.com/a/8187441/1026459。但是,我在使其工作时遇到了一些问题。

这是简单的标记

@using (Html.BeginForm("Restore", "GlobalCrud"))
{
 @Html.Hidden("entityId", "Id")
 <input class="ui-icon ui-icon-power" type="submit" 
  onclick="return confirm('Clicking OK will restore this record');" 
 />
}
Run Code Online (Sandbox Code Playgroud)

这是扩展

public static MvcHtmlString EditOrDelete(this HtmlHelper html)
{
  var s = html.BeginForm();
  return MvcHtmlString.Create(s + " additional fields " + "</form>");
}
Run Code Online (Sandbox Code Playgroud)

这是用途:

@using namespace.CustomHelper
@Html.EditOrDelete()
Run Code Online (Sandbox Code Playgroud)

这是输出:

<form method="post" action="/Completed/Manage">
System.Web.Mvc.Html.MvcForm additional fields 
</form>
Run Code Online (Sandbox Code Playgroud)

大多数情况下,辅助扩展可以满足我的需求。但是,我不确定如何将其转换回正确的html字符串。返回内容包括System.Web.Mvc.Html.MvcForm在文本中。我在" additional fields "这里添加简洁是因为那里没有问题。</form>之所以using@Html.BeginForm()添加</form>标记,是因为我知道随处理的普通语句会在标记处理后添加标记。

我如何正确返回由生成的表格.BeginForm

c# html-helper razor asp.net-mvc-3

3
推荐指数
1
解决办法
2589
查看次数

hiddenFor helper是从action参数中提取id,而不是viewModel

我偶然发现ASP.Net MVC的一个非常奇怪的情况,传递一个"id"作为动作参数和一个"id"隐藏的表单元素.我有一个具有"id"参数的动作.此id值表示项目.我有一个控制器操作,我正在创建一个数据输入表单,用于将员工分配给传入的项目(我创建一个下拉列表,管理员选择要分配给传递项目的员工).通过将员工分配给项目,我创建了一个ProjectEmployee记录(项目ID,员工ID和表示组合的ID,该组合是数据库中的标识列).标识列(名为"id")也是隐藏的表单元素.这是必要的,因为我需要能够在以后编辑项目/员工分配.

无论如何,在为项目创建新的员工分配时,项目ID(传递给操作的"id")将应用于"id"隐藏的表单元素.

我正在通过117行动.117是projectId.它被设置为"id"隐藏字段,该字段应该为0,因为0表示新项目/员工的分配.

查看模型

id  - unique id that represents the Project/Employee combination
projectId - the "Id" being passed to action
EmployeeId - what the admin is selecting from drop down
rate
startdate
endDate
...
Run Code Online (Sandbox Code Playgroud)

数据输入表格

@Html.HiddenFor(m => m.Id) 
@Html.HiddenFor(m => m.ProjectId)
...
Id: @Model.Id <br />
ProjectId: @Model.ProjectId<br />
Run Code Online (Sandbox Code Playgroud)

因此,@ Html.HiddenFor(m => m.Id)呈现隐藏的表单元素,其值为117. @ Model.Id将0呈现给UI.单步执行代码我可以在视觉上看到Id属性的值为0.为什么HiddenFor会将它的线交叉并拉出117的值?

这个bug已经进入了生产阶段,所以我手上的数据搞得一团糟,因为我没有在数据库表中创建新记录,而是实际更新了现有记录,因为"Id"属性被错误地设置了从0(表示新记录)到117(这是projectId),因此我正在更新不同的记录.

html-helper asp.net-mvc-3 html.hiddenfor

3
推荐指数
1
解决办法
1437
查看次数

如何在MVC 3中使用LabelFor

@Html.LabelFor(model => model.updateDate)
Run Code Online (Sandbox Code Playgroud)

但这被转换为<label for="updateDate">updateDate</label>,并且值不会只显示updateDate.我该如何显示该值?

.net c# html-helper asp.net-mvc-3

3
推荐指数
1
解决办法
8512
查看次数

RenderPartial和ViewBag

我正在尝试修改此代码:http: //www.codeproject.com/Articles/260470/PDF-reporting-using-ASP-NET-MVC3 使其获取ViewBag数据以呈现PDF中的视图.

基本上,我需要使用新的Context我的ViewBag传递给Html.RenderPartial,现在的代码是:

Html.RenderPartial(viewName, model);
Run Code Online (Sandbox Code Playgroud)

而我正在尝试将其更改为:

Html.RenderPartial(viewName, model, new ViewDataDictionary(ViewBag));
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,但字典保持空白.

BR

asp.net-mvc html-helper viewbag

3
推荐指数
1
解决办法
8619
查看次数

Html.BeginForm发布Model为null

您好我有以下问题:我试图通过表单将模型发布到其他控制器操作.但是收到的模型只填充了"null"元素. 在此输入图像描述

ToolController.cs

public class ToolController : Controller
{    
    public ActionResult Index()
    {
        var Model = new EditToolModel{ /* Some data */ };
        return View(Model);
    }

    [HttpPost]
    public ActionResult EditToolOverview(EditToolModel myModel)
    {
        return RedirectToAction("Index", "Tool", new { show = "overview" });
    }
}
Run Code Online (Sandbox Code Playgroud)

EditToolModel.cs

public class EditToolModel
{
    public Tools tool;
    public IEnumerable<Tools> tools { get; set; }

    public ToolsExtention tool_extention;
    public string latest_version { get; set; }
    public string latest_version_type { get; set; }
    public string latest_devStep { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net html-helper razor asp.net-mvc-4

3
推荐指数
1
解决办法
3583
查看次数