【问题标题】:Javascript adding Razor tags on client side, ASP.NET MVCJavascript 在客户端添加 Razor 标签,ASP.NET MVC
【发布时间】:2016-11-09 20:42:37
【问题描述】:

我想做一些在这个答案中描述的事情:https://stackoverflow.com/a/25062743/5837056

我的问题是,javascript 所做的更改会在发布后持续存在吗?或者视图会按照 .cshtml 文件中硬编码的内容重新加载吗?

抱歉,这是一个愚蠢的问题。

【问题讨论】:

    标签: javascript asp.net-mvc razor html-helper


    【解决方案1】:

    视图将重新加载,因为它在 .cshtml 文件中编码,但是剃刀代码将替换为注入的 html。

    例如在用户端

    @EditorFor(x=>x.Example)
    

    将被替换为

    <input type="text" id="Example" name="Example"/>
    

    等等。

    但是,如果您在 razor 中创建一些条件或迭代语句,根据您的模型更改注入的代码,您可能会影响初始视图。

    例如 - 如果您根据传递的对象数量显示字符串编辑器的集合,则 .cshtml 文件中的代码将根据该数字而改变。

    @foreach(var item in Model.Items)
    {
        @EditorFor(x=>item.Example)
    }
    

    将被替换为

    <input type="text" id="Item_0_Example" name="Item_0_Example"/>
    <input type="text" id="Item_1_Example" name="Item_1_Example"/>
    <input type="text" id="Item_2_Example" name="Item_2_Example"/>
    

    因此,更改您的基本 html 代码。

    在您链接的示例中 - 如果页面被刷新,视图将返回其原始状态。

    【讨论】:

    • 谢谢。我试图让用户使用按钮添加其他表单输入,例如在这个模型中:jsfiddle.net/cinerobert/409k27ot/8(单击“是”,然后单击“现金”,然后尝试使用底部的按钮添加新收件人)。但是我需要额外的输入在表单发布后持续存在。知道如何实现吗?
    • 如果你使用 IList Items 或任何你需要的数据类型/对象类型,你可以使用 将 0 替换为迭代器值。然后,当您发布页面时,项目将绑定到控制器中的列表,然后您可以将此传递的列表用于任何需要的目的。如果需要再次显示视图,可以将对象传回视图并重新显示
    • 谢谢。我有很多实验要做,以了解我得到的优秀建议!
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多