【问题标题】:How to render Dropdownlist with @razor inside a jQuery method - ASP.NET MVC如何在 jQuery 方法中使用 @razor 呈现下拉列表 - ASP.NET MVC
【发布时间】:2014-09-02 15:51:31
【问题描述】:

我遇到了一个奇怪的问题......我无法通过我的 javascript 代码中的下拉菜单来渲染剃须刀......他最终会因为渲染时的引号而丢失。在做拉伸代码之后:

function AddNewRowPriceTable(tableName)
        {
            var trBegin = "<tr>";
            var trEnd = "</tr>";
            var tdBegin = "<td>";
            var tdEnd = "</td>";


            $("#" + tableName).append(trBegin + tdBegin + " @Html.DropDownListFor( model => model.CompanyPriceType, DataDictionary.COMPANY_PRICE[ SessionWrapper.Culture ] ) " + tdEnd + trEnd);
    }

这是我得到的错误,下拉列表的值是“成本”,“收入”没有任何特殊字符。如何避免这个问题?

更新:问题不在引号中,而是在渲染时出现换行,如何避免换行?

【问题讨论】:

  • 在你的javascript中使用单引号,这样就不会冲突了。或者,您可以将其包装在一个单独的函数中,然后替换函数调用的结果,在返回的字符串中用单引号替换引号。
  • 感谢您的评论,我曾尝试使用单引号,但 p 错误仍然存​​在……您可以告诉我如何通过另一种方法返回字符串值吗?
  • @ErikFunkenbusch 请查看我的更新。
  • 很有可能,无论如何您都希望动态获取数据,那么为什么不直接将其设为一个将返回整行的 ajax 调用呢?
  • 是的,这是一条出路!即使已经完成,我们的朋友@mo.esmp 给了我们一个很好的解决方案,它显然对我有用。感谢您抽出宝贵时间。

标签: jquery asp.net-mvc razor render


【解决方案1】:

试试这个:

var dropDown= '@Ajax.JavaScriptStringEncode(Html.DropDownListFor( model => model.CompanyPriceType, DataDictionary.COMPANY_PRICE[ SessionWrapper.Culture ] )))';
$("#" + tableName).append(trBegin + tdBegin + dropdown + tdEnd + trEnd);

【讨论】:

  • 是的,这确实是一个很好的解决方案!非常感谢您的帮助。
猜你喜欢
  • 2013-04-12
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
相关资源
最近更新 更多