2012-09-18 49 views
0

我想发回一个categoryId并用新的强类型对象更新页面。出于某种原因,cateogryId在为空来了...asp.net MVC空字符串参数

$(function() { 
    $('#hhh').change(function() { 
     var url = $(this).data('url'); 
     var categoryId = $(this).val(); 
     $.ajax({ 
      url: url, 
      type: 'GET', 
      cache: false, 
      data: { categoryId: categoryId }, 
      success: function (result) { 
       // TODO: manipulate the result returned from the controller action 
      } 
     }); 
    }); 
}); 

<h2>Index</h2> 
@Html.ActionLink("Create New Listing", "Create") 
<br/> 
<strong>Filter Listings</strong> 
@Html.DropDownListFor(
    m => m.SelectedCategoryGuid, 
    Model.Categories, 
    "Select a Category", 
    new { 
     id = "hhh", 
     data_url = Url.Action("SortListing", "Listing") 
    } 
) 

控制器代码:

public ActionResult SortListing(string categoryGuid) 
    { 
     var listingCategory = new ListingCategory(); 
     listingCategory.Id = _tourismAdminService.GetByGuid<ListingCategory>(Guid.Parse(categoryGuid)).Id; 
     var listings = new List<Listing>(); 

     foreach (var listing in _tourismAdminService.ListAllEntities<Listing>()) 
     { 
      if (listing.CategoryId == listingCategory.Id) 
      { 
       listings.Add(listing); 
      } 
     } 

     return RedirectToAction("Index", "Listing", listings); 
    } 
+0

请发表您的'Controller'的操作方法。 – Gromer

+0

嗨。我添加了控制器代码 – Subby

回答

2

啊,没有什么帮助。你的JavaScript改成这样:

$(function() { 
    $('#hhh').change(function() { 
     var url = $(this).data('url'); 
     var categoryId = $(this).val(); 
     $.ajax({ 
      url: url, 
      type: 'GET', 
      cache: false, 
      data: { categoryGuid: categoryId }, 
      success: function (result) { 
       // TODO: manipulate the result returned from the controller action 
      } 
     }); 
    }); 
}); 

通知我改变了data: {...}线在JavaScript。您希望将data行中的参数名称与Action方法中的参数进行匹配,以使绑定生效。

+1

嗨。那工作。虽然有最后一个问题,但我会提出一个新的问题,我猜。 – Subby

1

您的操作方法需要一个名为categoryGuid的参数,但是您传递的参数与您的ajax代码的名称不同。在你的JavaScript代码, 更改

data: { categoryId: categoryId }, 

data: { categoryGuid: categoryId }, 
+0

谢谢!像Gomer的回答一样完美。虽然有一个新问题,但我会把它作为一个新问题发布 – Subby