标签: html-helper

是否有用于图像链接的ASP.NET MVC HtmlHelper?

Html.RouteLink()HtmlHelper非常适合文本链接.但是链接图像的最佳方式是什么?

asp.net-mvc routes html-helper

14
推荐指数
6
解决办法
3万
查看次数

如何创建像Html.BeginForm这样的Html Helper

我有一个扩展方法,用于验证用户是否能够根据角色查看网页的一部分.

如果我简单地删除内容,这会带给我更多的工作,因为所有丢失的表单在保存时都无法正确注册,我必须通过修改所有代码来处理这种行为,所以我想为什么不只是使用display:none;属性?

我希望有类似的东西:

@using(Html.RoleAccess(currentUser, RoleAccessType.Content_General_Website))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且这会写如下:

<div class="role_Content_General_Website" style="display:none;">
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

或者display:block;如果用户有权访问...

我可以创建一个简单的HtmlHelper但如何编写一个也输出结尾</div>

public static string RoleAccess(
         this HtmlHelper helper, 
         UserInfo user, 
         RoleAccessType role)
{
   return 
       String.Format(
            "<div class='role_{0}' style='display:{1}'>", 
            role.ToString(), user.HasAccess(role));
}
Run Code Online (Sandbox Code Playgroud)

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

14
推荐指数
1
解决办法
5560
查看次数

ASP.NET MVC Beta 1 - Html.RenderPartial在哪里?

我刚刚将我的Preview 5应用程序升级到Beta 1,我几乎在那里尝试渲染控件时出现这个错误:

'System.Web.Mvc.HtmlHelper'不包含'RenderPartial'的定义,也没有扩展方法'RenderPartial'接受类型为'System.Web.Mvc.HtmlHelper'的第一个参数'(你是否缺少using指令)或汇编参考?)

我的标记(在.aspx查看内容页面中)是:

<% Html.RenderPartial("Controls/UserForm", ViewData); %>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用Microsoft.Web.Mvc但无济于事.有谁知道Html.RenderPartial去了哪里,或者我可以使用哪种替代方案?

asp.net-mvc html-helper renderpartial

13
推荐指数
2
解决办法
8493
查看次数

Asp.Net Mvc - Html.TextBox - 设置自动对焦属性

在Html 5中,文本框上有一个名为autofocus的新属性.

问题是它是一个布尔值(有或没有)

它应该看起来像:

<input name="a" value="" autofocus>
Run Code Online (Sandbox Code Playgroud)

我试过了 :

<%= Html.TextBox( "a", null, new { autofocus } ) %>
Run Code Online (Sandbox Code Playgroud)

但是,它给了我一个错误,因为我没有为自动对焦设置值...

我知道我可以手动完成,但我可以使用Html.TextBox吗?

asp.net-mvc html-helper .net-3.5

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

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

我有一个剃须刀助手方法需要接受一个Func<>将返回一些HTML内容打印输出.这是我原来的:

@helper node(string title, Func<HelperResult> descriptions)
{
    ....
    <div>@descriptions()</div>
    ....
}

@node("title", 
              new Func<HelperResult>(() => 
              {
                 return new HelperResult(
                     @<text>
                     <span>"desc1"</span>
                     <span>"desc2"</span>
                     </text>);
              }))
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的文字永远不会打印出来.也没有错误.

所以我学习了内联帮助器,并将调用方法更改为:

@node("title",                     
              @<text>
              <span>"desc1"</span>
              <span>"desc2"</span>
              </text>)
Run Code Online (Sandbox Code Playgroud)

但是现在我收到编译错误说

"委托'System.Func'不接受1个参数".

但我并没有传递任何论点.

因此,如果我将其更改为Func<object,HelperResult>然后使用它调用它@descriptions(null)我得到以下错误:

"如果没有先将lambda表达式转换为委托或表达式树类型,则不能将lambda表达式用作动态调度操作的参数"

我确定我在某处出了点问题,但我不确定它到底是什么.

编辑:我想我可能已经解决了这个问题,但它引入了一些其他问题.

我做的是在传递动态方法之前施放lambda.我猜这就是错误试图说的:

@node("title",                     
              ((Func<dynamic, HelperResult>)(@<text>
              <span>"desc1"</span>
              <span>"desc2"</span>
              </text>))
Run Code Online (Sandbox Code Playgroud)

这有效,它可以span正确地打印出标签.不幸的是,在调用它时我必须传入一个无用的参数Func.

现在我的问题是我的真正功能不仅仅是写一些跨度.它更像是这样的:

@node("title",                     
              ((Func<dynamic, HelperResult>)(@<text>
              <span>@Helpers.Format(resource.Description,"item")</span>
              </text>))
Run Code Online (Sandbox Code Playgroud)

哪里@Helpers.Format是另一个助手和资源是从页面模型(动态)变量.

当然现在代码运行但没有打印出来(在<span>标签内).我在我的Format辅助函数中放了一个断点,它命中它并且所有参数都被正确设置,所以我不确定它为什么输出不正确.同样,如果我只是将其更改为resource.Description,那么仍然没有输出.

由于它在这个上下文之外运行良好,我想知道Razor的内联助手不能捕获外部变量吗?

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

13
推荐指数
1
解决办法
7173
查看次数

如果是Razor Views的Statement(For CSS Class)

我需要在CSS类之间切换,具体取决于是否读取了消息.

简单来说,应该是这样的:

if (item.status == "Unread")
{
  <tr style="font-weight:bold">
  ...
}
else
{
  <tr>
  ...
}
Run Code Online (Sandbox Code Playgroud)

我虽然无法实现这一目标.能告诉我一件好事吗?我应该使用HTML帮助器吗?

这是到目前为止的完整代码:

@foreach (var item in Model) {

    if (item.status == "Unread")
    {
        <tr style="font-weight:bold">
            <td>
                @Html.DisplayFor(modelItem => item.timestamp)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.subject)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.message_text)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.status)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.user_sender.username)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.user_reciever.username)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.id }) |
                @Html.ActionLink("Details", "Details", new { id = item.id }) | …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc html-helper razor

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

MVC5 - 如何在DropDownListFor Html帮助器中设置"selectedValue"

正如问题所说:如何在DropDownListFor Html助手中设置selectedValue?

尝试了大多数其他解决方案,但没有工作,这就是为什么我要开一个新问题.

这些都没有帮助:

@Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", 2), htmlAttributes: new { @class = "form-control" })

//Not working with or without cast
@Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", (ProjectName.Models.TipDepozita)Model.TipoviDepozita.Single(x => x.Id == 2)), htmlAttributes: new { @class = "form-control" })
@Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", (ProjectName.Models.TipDepozita)Model.TipoviDepozita.Where(x => x.Id == 2).FirstOrDefault()), htmlAttributes: new { @class = "form-control" })

@Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", new SelectListItem() { Value="2", Selected=true}), htmlAttributes: new { @class = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper asp.net-mvc-5

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

静态类型不能用作参数

我正在关注MVC音乐商店教程,但我在第5 部分第5部分中遇到了Html Helper .

到目前为止,我似乎已经正确地遵循它(如果我错了请纠正我:))...但是我收到以下错误:

'musicStoreMVC.Helpers.HtmlHelper':静态类型不能用作参数

这是我的应用程序的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace musicStoreMVC.Helpers
{
    public static class HtmlHelper
    {
        public static string Truncate(this HtmlHelper helper, string input, int length)
        {
            if (input.Length <= length)
            {
                return input;
            }
            else
            {
                return input.Substring(0, length) + "...";
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人能看到我做错了什么,或者如果需要更多信息,我会很感激指针!谢谢.

c# asp.net-mvc html-helper

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

使用Html.TextBoxFor时,将模型的名称添加为id的前缀

当我使用时,我有一个asp mvc 3项目

@Html.TextBoxFor(model => model.Name)
Run Code Online (Sandbox Code Playgroud)

TexBoxFor渲染为

<input id="Name" name="Name" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)

我的模型是"UserModel":

[DisplayName("Name")]
public string Name{ get; set; }
Run Code Online (Sandbox Code Playgroud)

有没有办法在模型中添加模型名称作为前缀?也许有些属性?

我希望文本框呈现为

<input id="UserName" name="UserName" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)

model-view-controller html-helper asp.net-mvc-3

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

MVC 5 RadioButton为枚举,是否始终选择默认的枚举值零?

说我有一个枚举:

public enum OrderStatusType
{
    Waiting = 0,
    Pending,
    Picked,
    Shipped,        
}
Run Code Online (Sandbox Code Playgroud)

我按如下方式生成单选按钮列表.

@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
Run Code Online (Sandbox Code Playgroud)

但等待总是被选中.输出HTML如下:

input type="radio" value="Shipped" name="Status" id="Status" checked="True"
input type="radio" value="Waiting" name="Status" id="Status" checked="checked"
Run Code Online (Sandbox Code Playgroud)

为什么MVC框架会自动添加"已检查"属性?谢谢.

该模型:

public class OrderViewModel
{
    public OrderStatusType Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

风景:

@using WebApplication17.Controllers
@model WebApplication17.Models.OrderViewModel

@{
    ViewBag.Title = "Home Page";
}


@Html.RadioButtonFor(m => m.Status, OrderStatusType.Picked)
<span>@OrderStatusType.Picked</span>

@Html.RadioButtonFor(m=>m.Status, OrderStatusType.Pending)
<span>@OrderStatusType.Pending</span>

@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
<span>@OrderStatusType.Shipped</span> …
Run Code Online (Sandbox Code Playgroud)

html-helper radio-button asp.net-mvc-5.2

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