【发布时间】:2015-12-18 13:15:06
【问题描述】:
这是我在淘汰赛中的简单功能。 在最后一行你可以看到,data: ko.toJson(post)
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() }
现在,请告诉我如何将这两者合二为一,以便我可以将消息连同选定的下拉 ID 一起发布到控制器中。这是我的控制器:
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" value="Share" data-bind="click: addPost">
除此之外,发送 id 的下拉菜单如下所示:
@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location", )
<script type="text/javascript">
$(document).ready(function () {
$("#Locations").change(function ()
{
var locationSelected = $("#Locations").val();
var url = '@Url.Action("PostPost", "Post")';
$.post(url, { id: locationSelected },
function (data)
{
});
});
});
</script>
在这个视图页面,我怀疑:
1> 在按钮单击时,我正在调用 addPost 函数并成功绑定 textarea 消息。但是,现在,在下拉选择中,我是否应该像这样调用相同的 addPost 函数:
@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location", new { data_bind = "event: { change: addPost}" })
我只想保存所选下拉列表的 ID,以便在单击输入类型按钮时与文本区域中的消息一起发送到控制器。我删除了一些代码以减少问题的长度。请帮帮我。
【问题讨论】:
标签: javascript jquery asp.net-mvc knockout.js