无法将模型值分配给javascript变量

时间:2012-12-17 22:13:41

标签: javascript asp.net-mvc-3

我使用自动完成功能来介绍产品说明并使用javascript函数获取ProductID和Price:

<script type="text/javascript">
  $(document).ready(function () {
    $(function () {
      $("#Description").change(function () {
        $("#ProductID").val(Description_autocomplete_hidden.value);
        $("#Price").load('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) });
      });
    });
  });
</script>

ProductID工作正常,正确调用了操作,例如“\ Product \ GetPrice \ 4”,但我无法将产品价格分配给$(“#Price”)。

剃刀代码:

<div class="row">
  <div class="label">@Html.Label("Product")</div>
  <div class="input">@Html.AutoComplete("Description","","Product","_Shared")</div>
</div>
<div id ="ProductID"></div>
<br />

<div class="row">
  <div class="label">@Html.Label("Price")</div>
  <div class="input">@Html.Editor("Price")</div>
</div>

产品控制器中的GetPrice():

public string GetPrice(int id)
{
  return unitOfWork.ProductRepository.GetByID(id).Pvp1.ToString();
}

3 个答案:

答案 0 :(得分:2)

@Carlos是对的! .load()函数尝试设置不适用于文本字段的内部HTML。您需要设置textBox的值才能使其正常工作。只需替换您的专线$("#Price").load('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) }); });

即可

有了这个:

    $.get('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) },
 function(result) {
        //set the value here    
        $("#Price").val(result);
    });

答案 1 :(得分:1)

看这里:

http://api.jquery.com/load/

  

jQuery使用浏览器的.innerHTML属性来解析检索到的   记录并将其插入当前文档。

根据那里写的内容,jQuery load方法不能用于设置输入的value属性。

请使用此:http://api.jquery.com/jQuery.ajax/

它会为您提供更多选择。同样在成功回调中,您可以在任何地方使用返回值,在您的情况下为输入值赋值:

$("#Price").val(data);

答案 2 :(得分:1)

$(document).ready(function () {
    $(function () {
      $("#Description").change(function () {
        $("#ProductID").val(Description_autocomplete_hidden.value);
  $.ajax({
                        url: '@Url.Action("GetPrice", "Product")',
                        data: { id: parseInt($("#ProductID").val()) },
                        dataType: 'text',
                        type: 'get',
                        success: function (data) {
                           $("#Price").val(data); // 
                        }
                    });        
      });
    });
  });

试试这个