我正在使用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;
});
但是,这个功能永远不会被称为停车场或舒适的模糊..
我错过了什么吗?请帮忙。
答案 0 :(得分:0)
我明白了..我应该把ajax代码写成
$('#AmenitiesPrice')。blur(function()
并获取值:
$('输入#Baseprice')。val ...
答案 1 :(得分:0)
要获得输入值,您需要添加paranthesis并设置输入值,您需要传递值作为参数,如下所示:
$('#Baseprice')。val($('#carpark')。val()+ $('#Amenity')。val());
language="javascript"
。@Html.TextBoxFor
@Html.EditorFor
@Html.EditorFor(model => model.AmenitiesPrice, new { @id = "Amenity" })
,因为您的新{@id =“Amenity”}参数未将元素的ID设置为Amenity,它仍然是#AmenitiesPrice。当你打电话时
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}}