2010-01-01 43 views
2

我有一个表格,我想根据下拉列表的值添加额外的字段。他们会是一组字段,我想动态地改变div的内容与来自渲染部分的html,这将呈现一个PartialView与我想要的字段。如何在ASP.NET MVC和jQuery中添加额外的部分视图,具体取决于下拉列表选择?

眼下的下拉列表中的代码如下

<p> 
     <label for="CatalogItem.Type"> Type: </label> 
     <%=Html.DropDownList("CatalogItem.Type",Model.Types, "Choose Type") %> 
    </p> 

    <div id = "ExtraInfo"> 

    </div> 

我要把多余的东西(领域的专门的类型)在ExtraInfo DIV。 jQuery代码会为此做什么?

谢谢!

+0

很难选择谁给出正确的答案,因为你们都给了我一部分,但我决定把它给@Tony,因为他发布了有关jQuery脚本的大部分答案......但@DM你得到了ajax调用的+1,因为那也是我想要的。 – 2010-01-02 19:30:37

回答

1

首先CSS类选择器添加到您的下拉列表中,让称它为“mydropdown”现在

使用这样的事情:

<script language=”javascript” type=”text/javascript” > 

     function addtoDiv() 
     { 
     $(document).ready(function() { 

     var myval=$(”#mydropdown”).val(); // get value of dropdown 


     if (myval == "somevalue") // check myval value 
     { 
      $("#ExtraInfo").html("add html code inside div here"); // add code based on   value 
     } 

     }} 
    </script> 
3

@Tony有正确的方法,而是外放你的RenderPartial html右键入“.html(”在div里面添加html代码“)”你可能想要做一个ajax调用。这样用户不会下载他/她甚至可能看不到的一堆html。

像这样:

if (myval == "someValue") 
{ 
    $("#ExtraInfo").load("/dynamic-stuff/1") 
} 
else if (myval == "someOtherValue") 
{ 
    $("#ExtraInfo").load("/dynamic-stuff/2") 
} 

这也假定您已经设置了处理像“/动态的东西/ 2”的URL路径并用正确的局部视图响应。

0

您是否需要动态添加字段?您可以通过以下方式使用JQuery添加字段:

$(“”)。attr(“id”,“test”)。addClass(“FormLabel”)。appendTo(“#parentElement”); (“”)。attr(“id”,“testinput”)。attr(“type”,“text”)。appendTo(“#parentElement”);

通过这种方式,您可以通过编程创建字段。

作为替代方案,您可以创建一个JQuery局部视图。创建一个返回这个局部视图的一个实例的操作方法,并调用使用

$.get("/<controller>/<actiontoreturnpartialview>", function(data) { 
    $("#ExtraInfo").html(data); 
}); 

它可以更容易,因为你可以依靠服务器端逻辑来呈现用户界面,操作方法,虽然我倾向于使用客户端方法。

或者,您可以创建自己的HTML助手来完成这一切,但这将是很多工作。

HTH。

相关问题