Почему вид не обновляется? (.Net MVC) - PullRequest
0 голосов
/ 05 января 2012

Я учусь .Net MVC.У меня есть страница, где я показываю линии продуктов.Я хочу отфильтровать линии продуктов по их поставщикам через выпадающий список.

Мой контроллер:

public class ProductlineController : Controller
{
    SupplierRepository sr = new SupplierRepository();
    ProductlineRepository pr = new ProductlineRepository();

    public ActionResult Default()
    {
        SupplierModel sm = new SupplierModel();

        List<Supplier> suppliers = sr.GetAll();

        sm.Suppliers = (from s in suppliers select new SelectListItem {
        Text = s.Name,
        Value = s.Id.ToString()
        }).ToList();

        sm.Productlines = pr.GetAll();

        return View("List", sm);
    }

    [HttpPost]
    public ActionResult SupplierDropUsed(int id)
    {
        SupplierModel sm = new SupplierModel();

        List<Supplier> suppliers = sr.GetAll();

        sm.Suppliers = (from s in suppliers
                        select new SelectListItem
                        {
                            Text = s.Name,
                            Value = s.Id.ToString()
                        }).ToList();

        Supplier supplier = sr.GetById(id);
        sm.Productlines = supplier.Productlines.ToList();

        return View("List", sm);
    }
}

Действие по умолчанию показывает все линии продуктов.SupplierDropUsed вызывается при изменении выпадающего списка.

Представление:

@model RyfMvcTestApplication1.Models.SupplierModel

@ {Layout = null;}

Список

<script type="text/javascript">

    function supplierDropChanged() {

        $.post("Productline/SupplierDropUsed", { id: $('#SupplierDrop').val() });
    }

</script>

<div><strong>Filter by supplier</strong></div>
<br />

<div>

@Html.DropDownList("SupplierDrop", Model.Suppliers, "Select supplier", new { onChange = "supplierDropChanged()" })

</div>
<br />
<br />

<table>
    <tr>
        <th style="width:50px; text-align:left">Id</th>
        <th style="text-align:left">Name</th>
        <th style="text-align:left">Supplier</th>
    </tr>

@foreach (var item in Model.Productlines) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Id)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Supplier.Name)
        </td>            
    </tr>
}

</table>

Когда я выбираю поставщика, выполняются действия javascript и controller (я проверял в режиме отладки).Я также получаю правильный идентификатор поставщика.Но мнение никогда не обновляется.Я все еще вижу список со всеми линиями продуктов.

1 Ответ

0 голосов
/ 05 января 2012

Вы делаете сообщение с помощью метода jquery post, который отправляет запрос, и именно поэтому вызывается ваше действие отладки, но тот результат, который возвращается после вызова post, никогда не используется для обновления вашего интерфейса.

...