Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 core 如何根据Asp.Net core上的用户选择更新视图_Asp.net Core - Fatal编程技术网

Asp.net core 如何根据Asp.Net core上的用户选择更新视图

Asp.net core 如何根据Asp.Net core上的用户选择更新视图,asp.net-core,Asp.net Core,我希望能够显示一个表单,该表单根据点.Net核心上选择的值而变化。我见过很多东西,比如动态表单、视图组件、razor和partials,还有很多信息,但非常混乱。任何关于正确的方法做我想要的信息将非常感谢 我有类别>子类别>>产品 订单只能用于一个类别>>子类别。因此,我想显示一个选择,并根据用户为新订单选择的类别,显示我必须显示的产品。因此,我不想选择用户选择,然后返回控制器,再返回视图,等等。我希望能够根据用户选择动态显示数据 这里是一段代码的摘录,只是为了简单地了解我在做什么。我不是像产品

我希望能够显示一个表单,该表单根据点.Net核心上选择的值而变化。我见过很多东西,比如动态表单、视图组件、razor和partials,还有很多信息,但非常混乱。任何关于正确的方法做我想要的信息将非常感谢

我有类别>子类别>>产品 订单只能用于一个类别>>子类别。因此,我想显示一个选择,并根据用户为新订单选择的类别,显示我必须显示的产品。因此,我不想选择用户选择,然后返回控制器,再返回视图,等等。我希望能够根据用户选择动态显示数据

这里是一段代码的摘录,只是为了简单地了解我在做什么。我不是像产品一样粘贴类

    public class OrderCreateViewModel
{    
    public IEnumerable<Category> Categories { get; set; }
    public IEnumerable<Branch> Branches { get; set; }
    public int BranchId { get; set; }
    public int CategoryId { get; set; }
}
公共类OrderCreateViewModel
{    
公共IEnumerable类别{get;set;}
公共IEnumerable分支{get;set;}
公共整数{get;set;}
public int CategoryId{get;set;}
}
控制器:

        [HttpGet]
    public IActionResult Create()
    {
        //Create vm
        IEnumerable<Branch> branchList = _branchDataService.GetAll();
        IEnumerable<Category> categoryList = _categoryDataService.GetAll();

        OrderCreateViewModel vm = new OrderCreateViewModel
        {
            Categories = categoryList,
            Branches = branchList
        };
        return View(vm);
    }
[HttpGet]
public IActionResult Create()
{
//创建虚拟机
IEnumerable branchList=_branchDataService.GetAll();
IEnumerable categoryList=_categoryDataService.GetAll();
OrderCreateViewModel vm=新的OrderCreateViewModel
{
类别=类别列表,
分支=分支列表
};
返回视图(vm);
}
视图:

@model OrderCreateViewModel
创建新订单

选择类别 选择分支
我只是在视图侧填充选择,并根据用户选择的内容,显示我想要显示的产品。我还没有通过产品列表,因为我不知道该特定类别的“过滤器”发生在哪里。
希望你能理解我需要什么:)

你有两个选择:

#1使用局部视图和AJAX获取数据

去看看下面的链接,它准确地描述了你想要实现的目标

#2使用Javascript填充第二个选择:

  • 首先,当页面加载时,您需要保存数据
在视图的开头,添加以下内容:

@{
<text>
    <script>
        var data = "@Newtonsoft.Json.JsonConvert.SerializeObject(Model)";
    </script>
</text>
}
@{
var data=“@Newtonsoft.Json.JsonConvert.SerializeObject(Model)”;
}
  • 接下来在分支选择器上使用更改时事件:
在视图底部,在page ready事件中执行以下操作:

<script>
    (function () 
        {
            var sltBranch = document.getElementsByName("BranchId")[0];
            var sltCat = document.getElementsByName("CategoryId")[0]
            sltCat.onchange = function () {
                var dataAsObj = JSON.parse(data);
                var branches = "";
                for (i = 0; i < dataAsObj.Branches.length; i++)
                {
                     if (dataAsObj.Branches[i].CategoryId == sltCat.value)
                     {
                         branches += "<option value='" + dataAsObj.Branches[i].BranchId + "'>" + dataAsObj.Branches[i].BranchName + "</option>"; //Whatever The branch name may be
                     }
                }
                sltBranch.innerHTML = branches;
            }


        }
    )(document, window);
</script>

(功能()
{
var sltBranch=document.getElementsByName(“BranchId”)[0];
var sltCat=document.getElementsByName(“CategoryId”)[0]
sltCat.onchange=函数(){
var dataAsObj=JSON.parse(数据);
var=”;
对于(i=0;i
不过,我建议您遵循选项1,因为这是一种更加经得起未来考验的策略。这意味着您需要更改视图模型等,但如果您计划广泛使用此策略,则需要使用选项1之类的使其更加健壮


祝你好运-编码愉快。

你好,我很想帮助你-但我们需要更多信息。您需要展示一个您试图在代码中实现的示例。此外,请更具体地说明您希望表单如何更改。是否要显示新表单或获取与在“选择”对话框中选择的内容相关的数据一般来说,由于缺乏信息和价值,这样的问题是不受欢迎的。添加更多信息,这样这个问题可以在将来帮助社区。非常感谢,问题已编辑,如果需要更多详细信息,请告诉我。回到holydays,我已经尝试并工作了!我遵循了链接,但通过使用ajax填充下拉列表解决了这个问题。干杯
<script>
    (function () 
        {
            var sltBranch = document.getElementsByName("BranchId")[0];
            var sltCat = document.getElementsByName("CategoryId")[0]
            sltCat.onchange = function () {
                var dataAsObj = JSON.parse(data);
                var branches = "";
                for (i = 0; i < dataAsObj.Branches.length; i++)
                {
                     if (dataAsObj.Branches[i].CategoryId == sltCat.value)
                     {
                         branches += "<option value='" + dataAsObj.Branches[i].BranchId + "'>" + dataAsObj.Branches[i].BranchName + "</option>"; //Whatever The branch name may be
                     }
                }
                sltBranch.innerHTML = branches;
            }


        }
    )(document, window);
</script>