2016-10-05 39 views
0

在我的項目中,我有一個名爲EduStandardCoursManager的頁面,它依賴於發送給頁面的查詢字符串類型顯示不同的反應。
EduStandardCoursManager我們有兩個控件(courseSelector,standardSelector)如果查詢字符串發送StandardID我想要StandardSelector地方1st和CourseSelector地方2nd。
像這樣:如何在客戶端交換兩個asp.net控件取決於情況?

<table> 
 
    <tr> 
 
    <td> 
 
     <input type="type" name="standardSelector" placeholder="StandardSelector" value="" /> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <input type="type" name="courseSelector" placeholder="CourseSelector" value="" /> 
 
    </td> 
 
    </tr> 
 
</table>

如果查詢字符串發送CourseID我想CourseSelector地方第1和StandardSelector地方第2位。
像這樣:

<table> 
 
    <tr> 
 
    <td> 
 
     <input type="type" name="courseSelector" placeholder="CourseSelector" value="" /> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <input type="type" name="standardSelector" placeholder="StandardSelector" value="" /> 
 

 
    </td> 
 
    </tr> 
 
</table>

有沒有辦法改變這些控件取決於查詢字符串類型?
(我不會把4控制代替)

+0

是否使用ASP.NET MVC剃刀的看法? – mtaanquist

+0

@Mads Taanquist - 編號 –

+0

例如,使用JavaScript管理頁面上的內容。您可以編寫一個指令,根據控制器返回的值顯示您想要的內容。使用基於JS的框架來管理視圖有很多種方法。 –

回答

1

在這裏你去,變化您的HTML將Id添加到您的行

<table> 
    <tr id="courseSelectorRow"> 
     <td> 
      Course<input type="text" name="courseSelector" placeholder="CourseSelector" value="" /> 
     </td> 
    </tr> 
    <tr id="standardSelectorRow"> 
     <td> 
      Standard<input type="text" name="standardSelector" placeholder="StandardSelector" value="" /> 
     </td> 
    </tr> 
</table> 

並添加此JavaScript片段,您必須jQuery的在你的頁面中引用

<script> 
    function getParameterByName(name, url) { 
     if (!url) url = window.location.href; 
     name = name.replace(/[\[\]]/g, "\\$&"); 
     var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
      results = regex.exec(url); 
     if (!results) return null; 
     if (!results[2]) return ''; 
     return decodeURIComponent(results[2].replace(/\+/g, " ")); 
    } 

    var standardID = getParameterByName('StandardID'); 
    if(standardID && standardID != '') 
    { 
     $("#standardSelectorRow").insertBefore("#courseSelectorRow"); 
    } 
</script> 
0

一種方法是把它們放在一個面板,並根據QueryString值OnLoad顯示你想要的。

 <asp:Panel ID="StandardID" runat="server" Visible="false"> 

      <table> 

       <tr> 
        <td> 
         <input type="type" name="standardSelector" placeholder="StandardSelector" value="" /> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <input type="type" name="courseSelector" placeholder="CourseSelector" value="" /> 
        </td> 
       </tr> 
      </table> 
     </asp:Panel> 

     <asp:Panel ID="CourseID" runat="server" Visible="false"> 
      <table> 
       <tr> 
        <td> 
         <input type="type" name="courseSelector" placeholder="CourseSelector" value="" /> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <input type="type" name="standardSelector" placeholder="StandardSelector" value="" /> 
        </td> 
       </tr> 
      </table> 
     </asp:Panel> 

這裏是後面的代碼:

public string foobar; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString["foo"] != null) 
     { 
      foobar = Request.QueryString["foo"]; 

      if (foobar == "CourseID") 
      { 
       StandardID.Visible = false; 
       CourseID.Visible = true; 
      } 
      else 
      { 
       StandardID.Visible = true; 
       CourseID.Visible = false; 
      } 
     } 
    } 

下面是結果,當您更改查詢字符串:

enter image description here

enter image description here

+0

我想交換控件。此解決方案不能解決我的問題。 –

+0

真的嗎?它的運行方式與我在運行時所詢問的完全相同。您的問題是演示問題,而不是動態代碼編寫。 – smoore4

相關問題