MVC:加载数组,具体取决于下拉列表的客户端选择

发布于 2024-11-02 04:21:40 字数 1138 浏览 0 评论 0原文

我想做以下事情: - 在我的 aspx 页面上加载一个数组(意味着使用 EF 来过滤请求的结果),具体取决于客户端的下拉列表的选择(包含在我的请求结果中传递参数的 id)。

我想我必须通过 jquery 或类似的东西。

我已经开始寻找解决方案,就像这样。我不确定我是否能找到解决方案的好方法。 我对 MVC 和客户端脚本非常了解,所以我愿意接受任何其他类型的解决方案或任何好的教程来解释我的问题的结果。

<script type="text/javascript" src="/Scripts/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.11.custom.js"></script>
<script type="text/javascript">
        $(function() {
           $("#FK_MET_ID").change(function() {
              $.get("/Provider/UpdateListProvider", function(data) {
              // something must be written here ?
              $("#ResultProvider").toggle(); // the div, containing my generated result ? 
                });
            });
        });
</script>

<% using (Html.BeginForm("Action", "Post")){%>    

<div id="ResultProvider"></div>

<%= Html.DropDownList("FK_MET_ID"); %>
<% } %> 

(我使用以下教程开始编码这部分代码: http://www.dotnetcurry .com/ShowArticle.aspx?ID=443)

I would like to do the following thing :
- Loading an array (meaning using EF to filter the result of a request) on my aspx page, depending of the selection, client-side, of my drop down list (containing the id to pass in parameter in my request result).

I suppose Ill have to pass by jquery or something Like that.

I have began to search a solution, like this. I'm not sure Im on the good way to find a solution.
I am quite begginer on MVC and Client side script, so I'm open to any other kind of solution, or any good tutorial, explaining the result of my question.

<script type="text/javascript" src="/Scripts/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.11.custom.js"></script>
<script type="text/javascript">
        $(function() {
           $("#FK_MET_ID").change(function() {
              $.get("/Provider/UpdateListProvider", function(data) {
              // something must be written here ?
              $("#ResultProvider").toggle(); // the div, containing my generated result ? 
                });
            });
        });
</script>

<% using (Html.BeginForm("Action", "Post")){%>    

<div id="ResultProvider"></div>

<%= Html.DropDownList("FK_MET_ID"); %>
<% } %> 

(I used the following tutorial to start coding this part of code : http://www.dotnetcurry.com/ShowArticle.aspx?ID=443)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

勿挽旧人 2024-11-09 04:21:40

您的方法是正确的,您必须添加一些脚本才能使其正常工作。您需要传入所选值,您应该将控制器代码添加到问题中。也许这更像是一个帖子而不是一个获取,但这超出了这个问题的范围。你返回的数据是什么?我认为你应该使用 jquery template 来显示你的数据。

$(function() {
           $("#FK_MET_ID").change(function() {
              $.get("/Provider/UpdateListProvider/" + $(this).val(), function(data) {

                if (data) {
                    $("#contractsTemplate").tmpl(data).appendTo('#contracts');
                }

                });
            });
        });

编辑:

最好的方法是使用 Json,在你的控制器中,你需要一个像这样的方法:

[HttpPost]
public virtual JsonResult GetContracts(string nameOfTheVariable)
        {
            var contracts = _session.All<Contract>();//add restriction with the variable
            return Json(contracts);
        }

在你看来,你可以使用 jquery template

<script id="contractsTemplate" type="test/x-jquery-tmpl">
    <li><a href="/contract/${Id}/version/${Version}/edit">${Filename}</a>   <span>${Status}</span></li>
</script>

<script type="text/javascript" src="@Links.Content.javascript.jquery_tmpl_min_js"></script>
<script type="text/javascript">

    $(function () {
        GetContracts();
    });

    function GetContracts() {
        $.ajax({
            type: "POST",
            url: "/API/GetContracts",
            dataType: "json",
            success: function (data) {
                $('#contracts').empty();
                if (data) {
                    $("#contractsTemplate").tmpl(data).appendTo('#contracts');
                }
            }
        });
    }
</script>

您需要在 global.ascx 中添加一个自定义路由,该路由将指向您的控制器,其中包含您想要的操作和您需要的参数 nameOfTheVariable ,或者您也可以将其作为查询来执行参数 yoururl.com$action?nameOfTheVariable="value"

如果您需要更多帮助,请告诉我!

You are on the right way, you have to add some script to get it working. You need to pass in the selected value, you should add the controller code to the question. Maybe it's more a post than a get but it's out of the scope of this question. What is the datat you return? I think you should use jquery template to show your data.

$(function() {
           $("#FK_MET_ID").change(function() {
              $.get("/Provider/UpdateListProvider/" + $(this).val(), function(data) {

                if (data) {
                    $("#contractsTemplate").tmpl(data).appendTo('#contracts');
                }

                });
            });
        });

EDIT :

The best way is to work with Json, in youre controller you need a method like this one :

[HttpPost]
public virtual JsonResult GetContracts(string nameOfTheVariable)
        {
            var contracts = _session.All<Contract>();//add restriction with the variable
            return Json(contracts);
        }

In youre view you can work with jquery template :

<script id="contractsTemplate" type="test/x-jquery-tmpl">
    <li><a href="/contract/${Id}/version/${Version}/edit">${Filename}</a>   <span>${Status}</span></li>
</script>

<script type="text/javascript" src="@Links.Content.javascript.jquery_tmpl_min_js"></script>
<script type="text/javascript">

    $(function () {
        GetContracts();
    });

    function GetContracts() {
        $.ajax({
            type: "POST",
            url: "/API/GetContracts",
            dataType: "json",
            success: function (data) {
                $('#contracts').empty();
                if (data) {
                    $("#contractsTemplate").tmpl(data).appendTo('#contracts');
                }
            }
        });
    }
</script>

You need to add a custom route in your global.ascx that will point to your controller with the action you want and the param nameOfTheVariable you need or can you can also do it as query parameter yoururl.com$action?nameOfTheVariable="value"

Let me know if you need more help!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文