2012-02-15 10 views
0

そのライブラリを使用して複数の選択を可能にするドロップダウン選択を表示するにはmultiselectを使用しようとします。jquery for mulitselect私はmasterページを使わずに成功しました。 しかし、私はマスターページコードを使用するとエラーが発生します(「メソッドはサポートされていません」)。 マスターページを使用していないシンプルなコードを貼り付けています。いずれか1つは、MVCカミソリのマスターページを使用してjqueryライブラリをどのように使用するかを教えてください。jquery multiSelectは、かみそりを使用してMVCで作業していません

ここはビューです。

@{ 
Layout = null; 
} 
@using LST.EMOTS.DynamicForms.Web.Models 
<!DOCTYPE html> 
<html> 
<head> 
<title>Index1</title> 
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script> 
<script src="../../Scripts/jquery.ui.widget.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.multiSelect.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.bgiframe.min.js" type="text/javascript"></script> 
<link href="../../Content/jquery.multiSelect.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript"> 


    $(document).ready(function() { 
     $("#control_3").multiSelect(); 
    }); 
    function change1() { 
     alert('this is called first'); 
     $('#hfHiddenfield').val($("#control_3").selectedValuesString()); 
     alert($('#hfHiddenfield').val()); 
    } 
</script> 
</head> 
<body> 
<div> 
     @using (Html.BeginForm()) 
    { 

     <select id="control_3" name="control_3[]" multiple="multiple" class="multiSelect" > 
      <option value=""></option> 
      @foreach (Item itm in ViewBag.objectData) 
      { 

      <option value="@itm.Id" >@itm.Name</option> 
      } 

     </select> 
     <input type="hidden" value="" name="crtrlValues" id ="hfHiddenfield" /> 
     <input type="submit" value="GO" onclick="change1()" /> 

    } 
</div> 
</body> 
</html> 

ここにコントローラがあります。

public class HomeController : Controller 
{ 

    [HttpGet] 
    public ActionResult Index1() 
    { 
     var model = new MyModel 
     { 
      SelectedItemIds = new[] { 2, 3 } 
     }; 
     MyModel modelitesm = new MyModel(); 
     ViewBag.objectData = modelitesm.AvailableItems; 
     return View(); 

    } 

    [HttpPost] 
    public ActionResult Index1(string crtrlValues) 
    { 
     var model = new MyModel 
     { 
      SelectedItemIds = new[] { 2, 3 } 
     }; 
     MyModel modelitesm = new MyModel(); 
     ViewBag.objectData = modelitesm.AvailableItems; 
     return View(); 

    } 

} 

ここにモデルです。

public class MyModel 
{ 
    public IEnumerable<int> SelectedItemIds { get; set; } 
    public IEnumerable<Item> AvailableItems 
    { 
     get 
     { 
      return new[] 
     { 
      new Item { Id = 1, Name = "Item 1" , isSeleced=false }, 
      new Item { Id = 2, Name = "Item 2" ,isSeleced=true}, 
      new Item { Id = 3, Name = "Item 3",isSeleced=false } 
     }; 
     } 
    } 
} 

public class Item 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool isSeleced { get; set; } 
} 

これは完璧な解決策ですが、これはマスターページで機能します。 マスターページを使ってどのように使用するのかを私に教えてください。

答えて

0

残りのjsファイルのパスを取得するのに@Url.Content(..)を使用していないと思われます。あなたはjQuery jsのためにそれを使用しています他のjsファイルのためになぜですか?

すべてのjsファイルに@Url.Content(..)を使用してみてください。うまくいけば、問題が解決するはずです。

+0

私もマスターと他のページでそれを試してみましたが、うまくいきません。 –

+0

MVCを使っているので、相対パスを使わないようにしてください。常に '@ Url.Content(..)'を使ってリソースのパス。 – ShankarSangoli

+0

私はそれも、マスターページを使用していない理由の解決策を私に提供してくれます。 @ url.Contentが使用されているとします。..... –

関連する問題