Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 根据下拉列表(MVC)加载PartialView的最佳方法_Asp.net Mvc_Jquery_Asp.net Mvc 4_Asp.net Mvc Partialview - Fatal编程技术网

Asp.net mvc 根据下拉列表(MVC)加载PartialView的最佳方法

Asp.net mvc 根据下拉列表(MVC)加载PartialView的最佳方法,asp.net-mvc,jquery,asp.net-mvc-4,asp.net-mvc-partialview,Asp.net Mvc,Jquery,Asp.net Mvc 4,Asp.net Mvc Partialview,让我解释一下情况。在下图中,我有一个下拉列表和一个div框,下拉列表总是有两个选项,当这被更改时,应该在div框中加载一个PartialView 当页面第一次加载时,应该显示下拉列表的第一个选项 现在我要给你看我的密码 [HttpGet] public ActionResult Monitor(short id, string viewBy = "class") { var model = db.Assignments.Find(id);

让我解释一下情况。在下图中,我有一个下拉列表和一个div框,下拉列表总是有两个选项,当这被更改时,应该在div框中加载一个PartialView

当页面第一次加载时,应该显示下拉列表的第一个选项

现在我要给你看我的密码

    [HttpGet]
    public ActionResult Monitor(short id, string viewBy = "class")
    {
        var model = db.Assignments.Find(id);

        List<SelectListItem> list = new List<SelectListItem>()
        {
            new SelectListItem() { Text = "Class", Value = "class" },
            new SelectListItem() { Text = "TEKS", Value = "teks" }
        };

        MonitorViewModel vm = new MonitorViewModel
        {
            AssignmentId = model.AssignmentId,
            AssignmentName = model.Name,
            ViewBy = list,
            SelectedView = viewBy
        };

        return View(vm);
    }

    public ActionResult MonitorContentView(short assignmentId, string viewBy)
    {
        if (viewBy.Equals("class"))
            return MonitorByClass(assignmentId);
        else
            return MonitorByTEKS(assignmentId);
    }

    public ActionResult MonitorByClass(short assignmentId) { ... }
    public ActionResult MonitorByTEKS(short assignmentId) { ... }
[HttpGet]
公共操作结果监视器(短id,字符串viewBy=“class”)
{
var model=db.Assignments.Find(id);
列表=新列表()
{
新建SelectListItem(){Text=“Class”,Value=“Class”},
新建SelectListItem(){Text=“TEKS”,Value=“TEKS”}
};
MonitorViewModel vm=新的MonitorViewModel
{
AssignmentId=model.AssignmentId,
AssignmentName=model.Name,
ViewBy=列表,
SelectedView=viewBy
};
返回视图(vm);
}
public ActionResult MonitorContentView(短赋值ID,字符串viewBy)
{
if(viewBy.Equals(“类”))
返回MonitorByClass(assignmentId);
其他的
返回监视器BYTEKS(分配ID);
}
public ActionResult MonitorByClass(短赋值ID){…}
public ActionResult MonitorByTEKS(短分配ID){…}
我的观点

@model Contoso.MvcApplication.ViewModels.Stats.MonitorViewModel
@{
    ViewBag.Title = "Monitor";
}

<hgroup>
    <h2>Monitor</h2>
    <h3>@Model.AssignmentName</h3>
</hgroup>

<div>
    <span>View by: </span>@Html.DropDownListFor(model => Model.SelectedView, Model.ViewBy, new { id = "monitorViewByDropDown" })
</div>

@using (Html.BeginForm(new { id = "monitorForm" })) {
<div id="monitor-content-view">
    @Html.Action("MonitorByClass", new { assignmentId = @Model.AssignmentId })
</div>
}
@model Contoso.mvcapapplication.ViewModels.Stats.MonitorViewModel
@{
ViewBag.Title=“监视器”;
}
班长
@Model.AssignmentName
查看人:@Html.DropDownListFor(model=>model.SelectedView,model.ViewBy,new{id=“monitorViewByDropDown”})
@使用(Html.BeginForm(new{id=“monitorForm”})){
@Action(“MonitorByClass”,新的{assignmentId=@Model.assignmentId})
}
因此,当用户更改下拉值时,应该必须通过AJAX(我还没有实现)调用
MonitorContentView
将值传递到部分视图中

我正在做的是一个很好的实现?还是有其他更好的方法?
我想知道加载部分视图的方法是否合适。

如果在
监视器内容视图中有一个复杂视图,该视图由
监视器ByClass
监视器ByTeks
返回,那么最好返回
视图结果。如果表示上述两种方法的每个视图没有那么复杂,那么最好返回json结果并在客户端填充视图。如果两个视图共享公共字段,其中一些字段根据调用的方法隐藏/显示,则效果更好。

您可以使用jQuery触发更改事件的加载。这里有一个例子。事实上,每个视图都有自己的视图模型。所以我猜它们不具有相同的属性