我的视图中有一个测试(诊断)下拉列表,并从该列表中选择任何测试,它应将相应的费用加载到只读文本框中。 这是我的观点:
<select name="TestId" id="TestId" style="width: 171px;">
<option value="">Select...</option>
@foreach (var tests in ViewBag.allTests)
{
<option value="@tests.TestId">@tests.TestName</option>
}
</select>
<input type="text" id="TestFee" name="TestFee" readonly="readonly" />
<script>
$(document).ready(function() {
$("#TestId").change(function() {
var testid = $("#TestId").val();
//$("#fees").empty();
var json = { testId: testid };
$.ajax({
type: "POST",
url: '@Url.Action("GetFeesById", "TestRequest")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(json),
success: function(data) {
$("#TestFee").val(data.Fee);
}
});
});
});
还有控制器:
public class TestRequestController : Controller
{
SaveTestManager manager=new SaveTestManager();
public ActionResult SaveTestRequest()
{
ViewBag.allTests = manager.AllTestViews();
return View();
}
[HttpPost]
public JsonResult GetFeesById(int testId)
{
var testlist = manager.AllTestViews().Where(m => testId==m.TestId);
return Json(testlist, JsonRequestBehavior.AllowGet);
}
}
我在我的JsonResult上使用了Debugger,它在下拉项的更改时返回相应的数据。但是,我的文本框没有从控制器返回的费用。 这段代码有什么问题吗?如何在文本框上分配值? NB:我之前从未使用过Json,我只是在一些博客和教程的帮助下尝试。如果有更好的方法,请同时提出建议。 感谢
答案 0 :(得分:0)
Try this
$("#TestFee").val(data.data[0].Fee);