在cshtml - mvc3中动态添加编辑器的值

时间:2013-07-06 02:53:45

标签: asp.net ajax asp.net-mvc-3 razor

我正在使用mvc3 asp.net,我的项目中有视图。在其中一个视图中,我有像baseprice等字段。还有另一个总字段。是否可行(通过AJAX)动态添加这些编辑器字段值并在另一个Editorfield中显示结果(我希望将其作为只读)。

cshtml代码:

<div class="editor-field">
    @Html.EditorFor(model => model.Baseprice, new { @id = "Baseprice" })
    @Html.ValidationMessageFor(model => model.Baseprice)
</div>
<div class="editor-label">
    @Html.LabelFor(model => model.AmenitiesPrice)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.AmenitiesPrice, new { @id = "Amenity" })
    @Html.ValidationMessageFor(model => model.AmenitiesPrice)
</div>

<div class="editor-field">
    @Html.EditorFor(model => model.BookedAmount, new { @readonly = "readonly", @id = "BookedAmt" })
    <span runat="server" style="color:Red;" visible="false"> *</span>
    @Html.ValidationMessageFor(model => model.BookedAmount)
</div>

现在,在cshtml里面的Ajax调用中,我试图做这样的事情:

<script type="text/javascript" language="javascript">
    $(function () {
        $('#Amenity').blur(function () {
            alert('Hi');
        });
        $('#carpark').blur(function () {
            $('#Baseprice').val = $('#carpark').val + $('#Amenity').val; 
        });

但是,这个功能永远不会被称为停车场或舒适的模糊..

我错过了什么吗?请帮忙。

2 个答案:

答案 0 :(得分:0)

我明白了..我应该把ajax代码写成

$('#AmenitiesPrice')。blur(function()

并获取值:

$('输入#Baseprice')。val ...

答案 1 :(得分:0)

  1. 我在你的HTML中没有看到#carpark。
  2. 要获得输入值,您需要添加paranthesis并设置输入值,您需要传递值作为参数,如下所示:

    $('#Baseprice')。val($('#carpark')。val()+ $('#Amenity')。val());

  3. 您无需在脚本标记中添加language="javascript"
  4. 尝试使用@Html.TextBoxFor @Html.EditorFor @Html.EditorFor(model => model.AmenitiesPrice, new { @id = "Amenity" }) ,因为您的新{@id =“Amenity”}参数未将元素的ID设置为Amenity,它仍然是#AmenitiesPrice。
  5. 当你打电话时

      public static MvcHtmlString EditorFor<TModel, TValue>(
        this HtmlHelper<TModel> html,
        Expression<Func<TModel, TValue>> expression,
        Object additionalViewData
    )
    

    您正在使用EditorFor的this重载:

    new {@id = "Amenity"}

    所以 @Html.TextBoxFor(model => model.AmenitiesPrice, new { @id = "Amenity" }) 是additionalViewData,它将传递给代表EditorTemplate forVestryPrice类型的veiw。

    致电时

    $('#AmenititsPrice').blur(function () {
                alert('Hi');
            });
    

    您将最后一个参数作为htmlAttributes传递,因此输入的ID将更改为#Amenity。

    替代决定是将选择器更改为#AmenititsPrice:

    {{1}}