2015-07-04 2 views
-1

У меня есть раскрывающийся список, который имеет идентификатор ratHolderName01. Я хочу получить значения в раскрывающемся списке, когда я нажимаю кнопку. для этого я пишу код, как показано ниже. Я ученик, я получил этот код с какого-то сайта. Я получаю значения в контроллере, я не знаю, как передавать значения из контроллера для просмотра. Может кто-нибудь мне помочь ? Я очень новичок в MVCКак передать значения Json из контроллера для просмотра?

Это мой код Javascript, чтобы получить значения из моего контроллера

function DropDownLoad() { 
     { 
      alert(""); 
      $.ajax({ 
       url: '@Url.Action("Dropdown", "JointCompany")', 
       type: "GET", 
       success: function (jpoc) { 
        $("stakeHolderName01").append(jpoc.Values); 
       } 
      }); 
     } 
    } 

Это мой контроллер и мое имя класса jointcompanyviewmodel и объект для этого является jpoc

public JsonResult Dropdown(JointCompanyViewModel jpoc) 
    { 
     jpoc.DropDownValues(); 
     return Json(jpoc, JsonRequestBehavior.AllowGet); 
    } 

Это моя модель Jointcompanymodel, в этом я получаю данные из имени объекта службы WCF - это Proxy. здесь все работает нормально.

public List<JointCompanyViewModel> DynamicDropDown() 
    { 
     var result = Proxy.GetJOCStakeHolder(); 
     List<JointCompanyViewModel> obj = new JavaScriptSerializer().Deserialize<List<JointCompanyViewModel>>(result); 
     return obj; 
    } 

    public List<SelectListItem> Values { get; set; } 

    public List<SelectListItem> DropDownValues() 
    { 
     var obj = DynamicDropDown(); 
     List<SelectListItem> lst = new List<SelectListItem>(); 
     foreach (var items in obj) 
     { 
      lst.Add(new SelectListItem { Text = items.Name, Value = items.ID }); 
     } 
     Values = lst; 
     return Values; 
    } 
+0

ваш селектор в состоянии найти элемент? $ ("totHolderName01") ... возможно $ ("# potHolderName01") –

ответ

1

Я думаю, что это то, что вы хотите:

В вашем действии контроллера вы хотите сохранить результат вызова метода jpoc.DropDownValues() в переменную и возвращает эту переменную из действия контроллера:

public JsonResult Dropdown(JointCompanyViewModel jpoc) 
    { 
     var result = jpoc.DropDownValues(); 
     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

Тогда на стороне клиента, ваш вызов Ajax получит результат вашего действия контроллера, который представляет собой список объектов:

function DropDownLoad() { 
     { 
      alert(""); 
      $.ajax({ 
       url: '@Url.Action("Dropdown", "JointCompany")', 
       type: "GET", 
       success: function (jpoc) { 
        $("#stakeHolderName01").append(jpoc); 
       } 
      }); 
     } 
    } 

Имейте в виду, что вам нужно будет вызвать функцию javascript DropDownLoad(), чтобы вызвать ваш вызов ajax и получить его результат действия вашего контроллера.

Также текущая логика в обратном вызове вашего вызова ajax недостаточно для обновления раскрывающегося списка. Затем вам нужно подумать о том, как вы хотите это сделать, это действительно зависит от типа раскрывающегося списка, который вы используете. Если после этого вы можете сделать это что-то вроде его <id="stakeHolderName01" select></select>:

var jpoc = [{ 
 
    Text: "option 1", 
 
    Value: 1 
 
}, { 
 
    Text: "option 2", 
 
    Value: 2 
 
}] 
 

 
// put this inside your success callback 
 
for (var i in jpoc) { 
 
    var x = jpoc[i]; 
 
    $('#stakeHolderName01').append('<option value="' + x.Value + '">' + x.Text + '</option>'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="stakeHolderName01"></select>

+0

И если 'jpoc' является' JsonResult', что вы делаете '.append (jpoc)' будет делать? –

+0

, если результатом является строка json, добавьте строку. Скорее всего, он ничего не сделает, потому что jQuery анализирует json-строки в javascript-объектах, которые не будут добавляться в dom. Но в качестве первого шага OP будет успешно передан json-данные от его контроллера до его представления по запросу. –

+0

О, я вижу, к чему вы клоните. Он пытается получить доступ к JsonResult контроллера с его зрения бритвы, чем сделать вызов ajax, чтобы получить его. –

Смежные вопросы