在MVC中使用2 get控制器

时间:2019-07-16 06:59:51

标签: c# jquery asp.net-mvc

我需要使用2 get控制器再次将数据传递到我的视图。我正在从视图中获取数据并将其发送到第二个控制器,但是ı无法再次将其传递给视图。ViewBag.Model已加载到控制器中传递给视图时会出错。

控制器:

    [HttpGet]
    public ActionResult Add()
    {
        FormDetailViewModel model = new FormDetailViewModel();


        foreach(Form item in formRep.List().ProcessResult)
        {
            FormList.Add(new SelectListItem { Value = 
     item.FormId.ToString(), Text = item.TeslimEden });
        }
        foreach(Item item in itemRep.List().ProcessResult)
        {
            İtemList.Add(new SelectListItem { Value = 
       item.ItemId.ToString(), Text = item.ItemDesc });
        }
        foreach(CheckListType item in typeRep.List().ProcessResult)
        {
            TypeList.Add(new SelectListItem { Value = 
      item.CheckListTypeId.ToString(), Text = item.CheckListType1 });
        }
        model.checkLists = TypeList;
        model.FormViewList = FormList;
        model.İtems = İtemList;

        return View(model);
    }

    [WebMethod]
    public ActionResult GetData(FormDetailViewModel model,string input)
    {
        ViewBag.model = input;

        return View(model);
    }

查看:

    @using (Html.BeginForm())
    {       <tr>
        <td>
            @Html.DisplayNameFor(model => model.FormDetail.CheckListType)
        </td>
        <td>
            @Html.DropDownListFor(model => 
 model.FormDetail.CheckListTypeId, Model.checkLists, new { @id = 
 "Selection", 
  @class = "drop-open" })
        <td><button onclick="">Bolum Ekle</button></td>
    </tr>





    <tr>
        <td colspan="2" style="padding-top:40px;">
            <input type="submit" value="Save" class="btn btn-info" />
        </td>
    </tr>
</table>


<h1> @ViewBag.model</h1>

JS / jQuery:

$(document).ready(function () {
$('#Selection').on('change', function () {
    var info = {
        id: $('#Selection option:selected').text()
    };

    $.ajax({
        url: '/User/FormDetail/GetData',
        type: "GET",
        data: { 'input': info.id },
        success: function (result) {
            console.log(result);
            //$('#ajaxDisplay').html(result);
        }
    });
});

获取http://localhost:63081/User/FormDetail/GetData?input=Notlar 500(内部服务器错误)

send @ jquery.min.js:4
ajax @ jquery.min.js:4
(anonymous) @ open.js:7
dispatch @ jquery.min.js:3
q.handle @ jquery.min.js:3

2 个答案:

答案 0 :(得分:1)

由于GetData(FormDetailViewModel model,string input) GetData在您的get请求中需要两个参数而导致错误,您只是传递了输入而不是模型,这就是模型为null的原因,并且您传递了相同的模型来查看return View(model);导致了问题您只需要使用Ajax将模型传递给您的get请求,否则就不要将模型传递给您的视图。像return View();

答案 1 :(得分:-1)

您没有正确传递数据,请进行以下更正,然后再进行操作。

您不需要在操作方法中添加第二个参数,因为您在模型中获取ID。

$(document).ready(function () {
        $('#Selection').on('change', function () {
        var info = {
            id: $('#Selection option:selected').text()
        };

        $.ajax({
            url: '/User/FormDetail/GetData',
            type: "GET",
            data: { 'model': JSON.stringify(info), 'input': info.id },
            success: function (result) {
                console.log(result);
                //$('#ajaxDisplay').html(result);
            }
        });
    });