【发布时间】:2016-04-12 17:33:10
【问题描述】:
这里是场景:
当用户选择 Details 按钮时,JavaScript 函数 getPersonId 会按预期抓取 personId。
出现问题的位置:
选择personId 后,我将Id 发送到ajax 呼叫中。 Id 已通过,但遇到问题:我的成功应该是什么? 并且 传递给控制器的 personId 为 null
问题列表:
- 向控制器发送参数时 Success 是如何工作的?
- C# 参数为空。
- 调用 ajax 方法的最佳方式是什么?是否应该在单击详细信息按钮时调用它?
HTML
<div class="col-md-12">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Details</th>
</tr>
</thead>
<tbody>
@foreach (var viewModel in Model)
{
<tr>
<td>@viewModel.Name</td>
<td>@viewModel.Age</td>
<td><button data-id="@viewModel.PersonId" type="button" data-bind="click: getPersonId" class="btn btn-success" data-toggle="modal" data-target="#details-modal"><span class="fa fa-external-link-square"></span> Details</button></td>
</tr>
}
</tbody>
</table>
</div>
在 HTML 底部创建 PersonViewModel 实例
<script>
$(function () {
window.viewModel = new PersonViewModel().init(@Html.Json(Model));
});
</script>
JavaScript
function PersonViewModel() {
var self = this;
self.init = function(data) {
ko.mapping.fromJS(data, {}, self);
ko.applyBindings(self, $("#tblPerson")[0]);
return self;
}
self.getPersonId = function(vm, ev) {
var personId = $(ev.target).data('id');
return personId;
}
self.getPersonEntity = function() {
$.ajax({
type: "POST",
url: '/Person/RetrievePersonEntity',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: ko.toJSON(self.getPersonId),
success: function() {} // not sure what I need here...
});
}
}
C# 控制器
[HttpPost]
public JsonResult RetrievePersonEntity(string personId)
{
var result = _personOrchestrator.RetrievePersonEntity(personId);
return Json(result);
}
【问题讨论】:
-
尝试使用新的 js 对象,例如 var obj={}; obj.personId="1";然后作为数据传递
-
@rashfmnb 我是 js 新手,所以你能扩展一下吗?
-
我的意思是说不要发送 ko.toJSON(self.getPersonId) 创建新的对象实例,如 var newobj={}; obj.personId=self.getPersonId;然后发送数据:ko.toJSON(newobj)
标签: javascript c# jquery ajax