【问题标题】:How to refresh only one Html.ListBox in asp.net razor?如何在 asp.net razor 中只刷新一个 Html.ListBox?
【发布时间】:2015-04-28 13:42:04
【问题描述】:

我试图只刷新一个 Html.ListBox。但我不知道如何用 ASP 做到这一点。现在它将刷新整个页面。

这是我的来源: 控制器

[HttpPost]
public ActionResult KenmerkSelectie(string Kenmerken1, string Buttontype, List<string> VarFromKenmerk1)
{
    if (Buttontype == "submit")
    {
        //Write to a database and process stuff
        return this.RedirectToAction("submitForm");
    }else{
        ViewBag.VarFromKenmerk1 = ...;
        //TODO: Must refresh the ListBox: VarFromKenmerk1;
        //AND AND NOT refresh whole page;
        return View("index");
    }

html 视图:

@using (Html.BeginForm("KenmerkSelectie", "KenmerkSelectie", FormMethod.Post, new { id = "kenmerk1" }))
{
    @Html.DropDownList("Kenmerken1",
    (SelectList)ViewBag.Kenmerk,
    "-- Selecteer een kenmerk--", new
    {
        onchange = "refreshVarFromKenmerk1();"
    })

     @Html.ListBox("VarFromKenmerk1", (SelectList)ViewBag.var, new { @style = "width: 252px; height: 300px" })

    <input type="submit" value="submit" id="btnNext" name="ButtonType" />
}

Javascript:

<script type="text/javascript">
    function refreshVarFromKenmerk1() {
        document.getElementById('kenmerk1').submit();
    }
 </script>

是否可以在没有 Javascript 的情况下实现这一目标?或者更好的方法是如何实现这一目标?

【问题讨论】:

  • 您想发送一个单独的GET 请求来填充选择列表。不要尝试在同一控制器操作中同时执行 POST 表单和选择列表填充。 (@beautifulcoder 在他的回答中暗示了这一点。)

标签: javascript c# asp.net razor


【解决方案1】:

我认为您正在寻找的是控制器中的Request.IsAjaxRequest()。您可以触发 Ajax 请求,例如:

$('#kenmerk1').change(function () { $.get(); /* this won't work but shows the basics */ });

然后,您可以在控制器中返回一个JsonResult 并刷新列表框。

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多