无法通过淘汰功能将所选下拉列表的ID发布到控制器

时间:2015-12-20 14:05:16

标签: javascript jquery asp.net-mvc linq knockout.js

这是我的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有人帮助我。我不知道该怎么办。

0 个答案:

没有答案