首页 \ 问答 \ 跨浏览器Javascript XML解析[关闭](Cross-Browser Javascript XML Parsing)

跨浏览器Javascript XML解析[关闭](Cross-Browser Javascript XML Parsing)

有没有跨浏览器/跨平台的方式来解析Javascript中的XML文件?


Are there any cross-browser / cross-platform ways to parse XML files in Javascript?


原文:https://stackoverflow.com/questions/7949752
更新时间:2023-10-25 12:10

最满意答案

大约一个月前我有同样的问题,我完成了使用这种扩展方法

public static class AttributesExtensions
{
    public static RouteValueDictionary DisabledIf(
        this object htmlAttributes, 
        bool disabled
    )
    {
        var attributes = new RouteValueDictionary(htmlAttributes);
        if (disabled)
        {
            attributes["disabled"] = "disabled";
        }
        return attributes;
    }
}

之后你可以像这样使用它

@Html.TextBoxFor(
    model => model.Street, 
    new { @class = "" }.DisabledIf(Model.StageID==(int)MyEnum.Sth)
)

编辑Paul评论之后 ):

data-xxx html属性的使用可以通过使用System.Web.Routing.RouteValueDictionary类的构造函数来挖掘,因为下划线不会自动转换为减号。

改为使用方法System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes :将解决此问题。

更新代码 (仅限扩展方法主体)

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (disabled)
{
    attributes["disabled"] = "disabled";
}
return attributes;

I have the same problem about month ago and I finished by using this extension method for it

public static class AttributesExtensions
{
    public static RouteValueDictionary DisabledIf(
        this object htmlAttributes, 
        bool disabled
    )
    {
        var attributes = new RouteValueDictionary(htmlAttributes);
        if (disabled)
        {
            attributes["disabled"] = "disabled";
        }
        return attributes;
    }
}

And after that you can use it like this

@Html.TextBoxFor(
    model => model.Street, 
    new { @class = "" }.DisabledIf(Model.StageID==(int)MyEnum.Sth)
)

EDIT (after Paul's comment):

The using of data-xxx html attributes may be mined by using the constructor of the System.Web.Routing.RouteValueDictionary class, since underscores will not be automatically converted to minus sign.

Use the method System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes instead: will solve this issue.

UPDATED CODE (Extension method body only)

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (disabled)
{
    attributes["disabled"] = "disabled";
}
return attributes;

相关问答

更多
  • 看来MVC 2 RTM目前不提供此功能。 你可以尝试这些扩展方法: public static MvcHtmlString ValidationMessageFor(this HtmlHelper htmlHelper, string prefix, Expression> expression) { return ValidationMessageF ...
  • 大约一个月前我有同样的问题,我完成了使用这种扩展方法 public static class AttributesExtensions { public static RouteValueDictionary DisabledIf( this object htmlAttributes, bool disabled ) { var attributes = new RouteValueDictionary(htmlAttributes ...
  • 有效的方法是: disabled="disabled" 浏览器也可能会接受 disabled=""但我会推荐你第一种方法。 现在这是说我建议你编写一个自定义的HTML帮助器,以将这个禁用功能封装成可重用的代码片段: using System; using System.Linq.Expressions; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Html; using System.Web.Routing; public s ...
  • [DisplayName("Start Date")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")] public DateTime StartDate { get; set; } 然后: <%=Html.EditorFor(m => m.StartDate) %> [DisplayName("Start Date")] [DisplayFormat(ApplyFormatInEdit ...
  • 我相信在设置新值之前,您必须在[HttpPost]操作中调用ModelState.Clear() 。 根据这个答案,其中有一个非常好的解释: 如何更新文本框的值@ Html.TextBoxFor(m => m.MvcGridModel.Rows [j] .Id) 另请参阅: ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上完成的更改尽管看起来您没有使用Ajax.BeginForm ,但其行为相同。 包括@Scheien建议的示例: [HttpPost] ...
  • 这是设计。 禁用的输入不会回发到服务器。 您可以使用'readonly'使输入为'只读'。 这将使数据被POSTED,但用户不能以传统方式编辑信息。 请记住,人们可以使用像Firebug或Dragonfly这样的工具编辑数据并将其发回。 因此,坚持脚趾,并确保数据是相同的,或者更好,只需使用disabled属性即可。 This is by design. Disa ...
  • 你可以这样做来添加一个名为singleTextBox的CSS类,然后你可以在样式表中分配一个宽度: <%= Html.TextBoxFor(model => model.UserName, new { @class = "singleTextBox" }) %> 在你的样式表中: .singleTextBox { width: 12em; } You can do this to add a CSS class called singleTextBox, and then you can ass ...
  • 如果您尝试在用户键入时设置文本框的宽度,则可以使用jQuery来完成此操作。 但是你还不清楚决定文本框长度的因素,所以如果你想让文本框的大小随着用户类型的增加而增加,你可以使用这样的东西: $('#abc').on('keyup', (function() { var size = $(this).val().length(); $(this).css( 'width', size + 'px' ); }); If you are trying to set the width of the t ...
  • 你需要使用javascript来实现这一目标。 这是jquery的一个例子: $(function() { $('#fileId').change(function() { // When the user selects a file, read the selected filename // and set it to the textbox var filename = $(this).val(); $('#fileName') ...
  • 如果我正确理解你的问题,这可以用一个小小的JavaScript来完成。 这是一个简单的例子。 在页面加载时将每个文本框渲染为只读: <%: Html.TextBoxFor(model => model.Date, new { @readonly = "readonly" }) %> 为您的编辑按钮添加一个单击处理程序,该处理程序将从每个文本框中删除readonly属性: $("#editButton").click(function() { $("#Date").removeAttr("reado ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)