相关疑难解决方法(0)

Ajax.BeginForm替换了下拉列表的整个页面

目的

我有一个简单的表列出名称(在部分视图中),上面是一个包含这些名称的下拉列表.目的是根据下拉列表中选择的名称过滤表.只要下拉列表中的选定值发生更改,就应该进行过滤,并且应该仅再次呈现部分视图.

问题

当我在下拉列表中选择一个值时,部分视图不会在另一个视图中呈现,而是显示为整个页面.但是,当我在Ajax.BeginForm块中包含一个提交按钮,并在提交按钮上触发操作时,它确实按预期运行...

代码

调节器

public PartialViewResult Filter(string filterName) {
    var names = from p in db.People
                select p;

    if (!String.IsNullOrEmpty(filterName))
    {
        names = names.Where(p => p.Name.Equals(filterName));
    }

    return PartialView("_PersonsTable", names);
}
Run Code Online (Sandbox Code Playgroud)

视图

@model IEnumerable<Sandbox.Models.Person>

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>

@using (Ajax.BeginForm("Filter", "Person", new AjaxOptions { 
    HttpMethod = "Get", UpdateTargetId = "SearchResults", InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace }))
{
    @Html.DropDownList("filterName", new SelectList(ViewBag.Names), "Select a name", new   { onchange = "this.form.submit()" })
}

@Html.Partial("_PersonsTable")
Run Code Online (Sandbox Code Playgroud)

局部视图

@model IEnumerable<Sandbox.Models.Person>

<table id="SearchResults">
    <tr>
        <th> …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc razor

22
推荐指数
1
解决办法
1万
查看次数

AJAX调用MVC中的OnChange事件

我必须在下拉列表的onchange事件上进行AJAX调用,这是视图的一部分.在更改事件上,我需要调用数据库,执行一些计算显示UI,然后使用计算来填充图表控件.UI显示按此顺序显示.图表下拉类别列表具有评级分数的子类别列表因此,您可以在更改事件中显示div3中的类别评级,使用评级分数填充图表.在.NET中轻松完成但是如何在MVC中完成?我能想到的唯一选择是使用代码创建用户控件,但这会破坏使用MVC的目的.任何帮助表示赞赏.

c# asp.net-mvc

7
推荐指数
2
解决办法
3万
查看次数

标签 统计

asp.net-mvc ×2

ajax ×1

c# ×1

razor ×1