Javascript 如何在asp.net razor中仅刷新一个Html.ListBox?

Javascript 如何在asp.net razor中仅刷新一个Html.ListBox?,javascript,c#,asp.net,razor,Javascript,C#,Asp.net,Razor,我试图只刷新一个Html.ListBox。但我不知道如何使用ASP来实现这一点。现在它将刷新整个页面 以下是我的资料来源: 控制器 [HttpPost] public ActionResult KenmerkSelectie(string Kenmerken1, string Buttontype, List<string> VarFromKenmerk1) { if (Buttontype == "submit") { //Write to a da

我试图只刷新一个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");
    }
[HttpPost]
公共操作结果KenmerkSelectie(字符串Kenmerken1,字符串Buttontype,列表VarFromKenmerk1)
{
如果(按钮类型==“提交”)
{
//写入数据库并处理数据
返回此.RedirectToAction(“submitForm”);
}否则{
ViewBag.VarFromKenmerk1=。。。;
//TODO:必须刷新列表框:VarFromKenmerk1;
//并且不刷新整个页面;
返回视图(“索引”);
}
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" />
}
@使用(Html.BeginForm(“KenmerkSelectie”,“KenmerkSelectie”,FormMethod.Post,new{id=“kenmerk1”}))
{
@Html.DropDownList(“Kenmerken1”,
(选择列表)ViewBag.Kenmerk,
“--Selecteer een kenmerk--”,新建
{
onchange=“refreshVarFromKenmerk1();”
})
@Html.ListBox(“VarFromKenmerk1”,(SelectList)ViewBag.var,新的{@style=“width:252px;height:300px”})
}
Javascript:

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

函数refreshVarFromKenmerk1(){
document.getElementById('kenmerk1').submit();
}

没有Javascript是否可以实现这一点?或者更好的方法是如何实现这一点?

我认为您需要的是控制器中的
Request.IsAjaxRequest()
。您可以启动Ajax请求,如:

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

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

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