Razor语法导致jQuery Mobile表单元素丢失样式

时间:2012-10-11 09:58:36

标签: html css asp.net-mvc jquery-mobile razor

有一个奇怪的问题,我希望人们可以放弃一些。 当我在jQuery Mobile MVC 4项目中使用复选框和单选按钮制作表单时,如果我使用Razor语法根据视图模型吐出控件,例如@ Html.RadioButtonFor等而不仅仅是编写标准输入类型=“radio”,jQuery Mobile不会将样式应用于元素。包括屏幕截图和代码差异。这与控件的呈现方式有关吗?在视图和部分视图中都会发生。

我已经改变了第一组单选按钮来证明这一点。如果我将整个表单更改为Razor HTML帮助程序,我会在所有控件中获得相同的结果。

非剃刀: Non Razor 剃刀: Razor

非剃刀代码:

<fieldset data-role="controlgroup" data-type="vertical" class="recurrencyArea">
                                <legend></legend>
                                <input type="radio" data-theme="b" name="Period" id="Daily" value="Daily" checked="checked" />
                                <label for="Daily">Daily</label>

                                <input type="radio" data-theme="b" name="Period" id="Weekly" value="Weekly" />
                                <label for="Weekly">Weekly</label>

                                <input type="radio" data-theme="b" name="Period" id="Monthly" value="Monthly" />
                                <label for="Monthly">Monthly</label>
                            </fieldset>

剃刀代码:

<fieldset data-role="controlgroup" data-type="vertical" class="recurrencyArea">
                                <legend></legend>
                                @Html.LabelFor(x=>x.Period, "Daily")
                                @Html.RadioButtonFor(x => x.Period, "Daily", new { data_theme = "b", @Checked = "checked", id = "Daily"  })

                                @Html.LabelFor(x=>x.Period, "Weekly")
                                @Html.RadioButtonFor(x => x.Period, "Weekly", new { data_theme = "b", @Checked = "checked", id = "Weekly"  })

                                @Html.LabelFor(x=>x.Period, "Monthly")
                                @Html.RadioButtonFor(x => x.Period, "Monthly", new { data_theme = "b", @Checked = "checked", id = "Monthly"  })
                            </fieldset>

在jquery移动脚本在页面上运行后是否生成了razor html?

任何有任何有用想法的人/或者任何能发现任何愚蠢错误的人都会成为英雄!

非常感谢, 基督教

1 个答案:

答案 0 :(得分:2)

我对jquerymobile不太熟悉,但是我可以在这里看到的故障是,对于html代码,你的标签看起来像这样:

<label for="Daily">Daily</label>

而剃刀代码将输出如下标签:

<label for="Period">Daily</label>

&#34; for&#34;在剃刀代码中你的sceanrio的属性是错误的,也许jquery mobile对此很敏感?