2013-10-24 58 views
2

我有這個選擇二輸入框作爲在我看來,一個標記控制器標記:如何設置選擇二輸入默認值與asp.net的MVC

CSHTML

<input id="tagSelector" type="hidden" style="width: 300px"/> 

JS

$('#tagSelector').select2({ 
      placeholder: 'Select a tag...', 
      multiple: true, 
      ajax: { 
       url: '@Url.Action("SearchTags", "UnitDetails")', 
       dataType: 'json', 
       data: function(term, page) { 
        return { 
         searchTerm: term 
        }; 
       }, 
       results: function(data, page) { 
        return { results: data }; 
       } 
      }, 
      createSearchChoice: function(term) { 
       return { id: term, text: term }; 
      } 
     }).on("removed", function(e) { 
      var url = '@Url.Content("~/UnitDetails/UnTagUnit/" + Model.ViewUnitContract.Id)'; 
      var id = e.val; 
      var tagName = e.choice.text; 
      console.log(id + " : " + tagName); 

      $.ajax({ 
       url: url, 
       data: { selectedItem: tagName }, 
       type: 'GET', 
       dataType: 'json', 
       success: function() { 
       }, 
       error: function() { 
       } 
      }); 
     }) 
      .on("select2-selecting", function(e) { 
       var url = '@Url.Content("~/UnitDetails/TagUnit/" + Model.ViewUnitContract.Id)'; 
       var id = e.val; 
       var tagName = e.object.text; 
       console.log(id + " : " + tagName); 

       $.ajax({ 
        url: url, 
        data: { selectedItem: tagName }, 
        type: 'GET', 
        dataType: 'json', 
        success: function() { 
        }, 
        error: function() { 
        } 
       }); 
      }); 
    }); 

C#

public JsonResult GetInitialTags(int id) 
{ 
    Model = new UnitDetailsModel(UnitClient.GetUnit(id)); 
    foreach (var tag in Model.ViewUnitContract.Tags) 
    { 
     Model.TagsSelected.Add(tag); 
    } 

    var result = Model.TagsSelected.Select(a => new 
     { 
      id = a.Id, 
      text = a.Name 
     }); 

    return Json(result, JsonRequestBehavior.AllowGet); 
} 

現在,我似乎無法弄清楚如何使用initSelection爲了填充已經選擇的標籤的輸入框。我希望有人能幫助我,因爲我開始覺得有點失落:)

回答

3

通過將initSelection屬性,以我的javascript找到了解決這個:

... 
      initSelection: function (element, callback) { 
       $.get('@Url.Action("GetInitialTags", "UnitDetails", new { id = Model.ViewUnitContract.Id })', function (initTags) { 
        var tags = []; 

        for (var i = 0; i < initTags.length; i++) { 
         tags.push({ "id": initTags[i].id, "text": initTags[i].text }); 
        } 

        callback(tags); 
       }); 
      }, 
...