这是我的Post函数:
function Post(data) {
var self = this;
data = data || {};
self.PostId = data.PostId;
self.Message = ko.observable(data.Message || "");
self.PostedBy = data.PostedBy || "";
self.NeighbourhoodId = data.id || "";
这是我在淘汰赛中的简单功能。在最后一行你可以看到,数据:ko.toJson(帖子)
self.addPost = function () {
var post = new Post();
post.Message(self.newMessage());
return $.ajax({
url: postApiUrl,
dataType: "json",
contentType: "application/json",
cache: false,
type: 'POST',
data: ko.toJSON(post)
})
.done(function (result) {
self.posts.splice(0, 0, new Post(result));
self.newMessage('');
})
.fail(function () {
error('unable to add post');
});
}
现在,与此同时,我想通过下拉列表选择这样的ID:
data: { id: $("#Locations").val() }
现在,我尝试过使用它:
data:{post: ko.toJSON(post), id: $("#Locations").val() }
但是在控制器中,帖子:ko.toJSon(post)没有发送任何内容但是我得到了所选下拉列表的id而不是post参数的message属性。 如果我使用这一行:
data: ko.toJSON(post)
然后我可以得到post参数的每个属性,但后来id为null所以,如何处理这个.Plzz Plzz帮助我.Debugger没有显示任何有用的信息。我的帖子控制器是:
public JsonResult PostPost(Post post, int? id)
{
post.PostedBy = User.Identity.GetUserId<int>();
post.NeighbourhoodId = id;
db.Posts.Add(post);
db.SaveChanges();
var usr = db.Users.FirstOrDefault(x => x.Id == post.PostedBy);
var ret = new
{
Message = post.Message,
PostedBy = post.PostedBy,
NeighbourhoodId = post.NeighbourhoodId
};
return Json( ret,JsonRequestBehavior.AllowGet);
}
在我的视图页面上,这是点击事件我触发addPost函数的按钮
<input type="button" data-url="/Wall/SavePost" id="btnShare" value="Share" data-bind="click: addPost">
与此一起,发送id的下拉列表是这样的:
@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location")
<script type="text/javascript">
$(document).ready(function () {
$("#btnShare").click(function () {
var locationSelected = $("#Locations").val();
var url = '@Url.Action("PostPost", "Post")';
$.post(url, { id: locationSelected },
function (data) {
});
});
});
</script>
Plzz有人帮助我。我不知道该怎么办。