Javascript 如何让HTML.BeginForm仅重新加载包含它的部分视图

Javascript 如何让HTML.BeginForm仅重新加载包含它的部分视图,javascript,c#,asp.net-mvc,asp.net-mvc-4,partial-views,Javascript,C#,Asp.net Mvc,Asp.net Mvc 4,Partial Views,我有一个局部视图,其中列出了一个项目表。我希望这个表是可搜索的,将有很多项目显示或查看。我使用的是HTML.BeginForm,但发现它不起作用。 代码如下: 订单管理员: public ActionResult Index() { return View(); } public ActionResult ItemListPartialView(string searchString) { var items = _itemControls.GetAllItems()

我有一个局部视图,其中列出了一个项目表。我希望这个表是可搜索的,将有很多项目显示或查看。我使用的是HTML.BeginForm,但发现它不起作用。 代码如下: 订单管理员:

public ActionResult Index() {
    return View();
}

public ActionResult ItemListPartialView(string searchString) {
    var items = _itemControls.GetAllItems()
        .Select(x => new ItemOrderViewModel() {
            Id = x.Id,
            Name = x.Name,
            Price = Convert.ToString(x.Price, CultureInfo.InvariantCulture),
            Size = x.Size + " " + x.QuantityType.Name,
            Quantity = 0
        });

    if (!string.IsNullOrEmpty(searchString)) {
        items = items.Where(x => x.Name.Contains(searchString)).ToList();
    }

    return PartialView("_ItemListPartialView", items);
}
<pre>Index</pre>

<pre>
    @Html.Action("ItemListPartialView", "Order")
</pre>
[HttpPost]
public ActionResult ItemListPartialView(string searchString) {
    var items = _itemControls.GetAllItems()
        .Select(x => new ItemOrderViewModel() {
            Id = x.Id,
            Name = x.Name,
            Price = Convert.ToString(x.Price, CultureInfo.InvariantCulture),
            Size = x.Size + " " + x.QuantityType.Name,
            Quantity = 0
        });

    if (!string.IsNullOrEmpty(searchString)) {
        items = items.Where(x => x.Name.Contains(searchString)).ToList();
    }

    return PartialView("_ItemListPartialView", items);
}
及意见:

主要观点:

索引
@动作(“ItemListPartialView”,“Order”)
部分观点:

@model IEnumerable
@Scripts.Render(“~/Scripts/AddItemToList.js”)
@使用(Html.BeginForm(“ItemListPartialView”,“Order”))
{
按名称查找:@Html.TextBox(“搜索字符串”)提交按钮
}
名称
价格
大小
量
@foreach(模型中的var项目)
{
@Html.HiddenFor(modeleItem=>item.Id)
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Price)
@DisplayFor(modelItem=>item.Size)
@EditorFor(modelItem=>item.Quantity,new{htmlAttributes=new{min=0})
}
很抱歉在stackoverflow中格式化第一次过帐代码。 但是是的,我希望BeginForm只提交给控制器中的方法,部分视图不是来自整个实际页面本身。有办法做到这一点吗? 或者有没有一种使用JS/AJAX或JQuery的方法可以从tet框中获取输入并搜索和显示相关信息?
我对JS的东西很陌生,所以我不知道该怎么做。谢谢

您可以试试这个方法,看看它是否有效。 参考资料:

步骤1:尝试将部分视图中的代码替换为:


我把所有内容都改成了pre标签,因为我误读了HTML规则……对不起!
@using (Html.BeginForm("ItemListPartialView", "Order"))
{
    Find by name: @Html.TextBox("searchString")
    <input type="submit" name="Search" value="Search" />
}
[HttpPost]
public ActionResult ItemListPartialView(string searchString) {
    var items = _itemControls.GetAllItems()
        .Select(x => new ItemOrderViewModel() {
            Id = x.Id,
            Name = x.Name,
            Price = Convert.ToString(x.Price, CultureInfo.InvariantCulture),
            Size = x.Size + " " + x.QuantityType.Name,
            Quantity = 0
        });

    if (!string.IsNullOrEmpty(searchString)) {
        items = items.Where(x => x.Name.Contains(searchString)).ToList();
    }

    return PartialView("_ItemListPartialView", items);
}