c# - 单击按钮时模型为空 ASP.NET MVC 5

标签 c# jquery asp.net ajax asp.net-mvc

我使用 ajax 将部分 View 加载到 View 中。局部 View 中有一个下拉列表,但是每当我选择一个下拉选项并单击局部 View 中的按钮进行连接时,我都会收到一个错误消息,指出模型为空。这很奇怪,因为模型已经填充了下拉列表,并且它不会在断点处对我的 Controller 执行任何操作。我在这上面花了几天时间。

错误是:

An exception of type 'System.NullReferenceException' occurred in App_Web_m2cylvfu.dll but was not handled in user code Additional information: Object reference not set to an instance of an object.

HTML

<div>
    <fieldset>
        <div>
            @Html.LabelFor(m => m.ServerName)
        </div>
        <div>
            @Html.DropDownListFor(model => model.ServerName, Model.ServerNames, "-- Select Server --")
        </div>
        <div>
            <input id="btnConnect" type="submit" name="Connect" value="Connect" />
        </div>
    </fieldset>
</div>

JavaScript

$(document).ready(function() {

  $('#btnConnect').click(function(evt) {
    evt.preventDefault();
    evt.stopPropagation();

    var selectedServerName = $('#ServerName').val()
    $.ajax({
      url: '@Url.Action("ConnectToServer", "Settings")',
      data: {
        'servername': selectedServerName
      },
      cache: false,
      type: 'post',
      datatype: 'json',
      success: function(result) {
        var $el = $("#DatabaseName");
        $el.empty(); // remove old options
        $el.append($("<option></option>").attr("value", '').text('Please Select'));
        $.each(result, function(value, key) {
          $el.append($("<option></option>").attr("value", value).text(key));
        });
      }
    });

  });

}

Controller

public PartialViewResult Index() {
    var afConnectionModel = new AFConnectionModel() {
        ServerNames = GetServers()
    };
    return PartialView(afConnectionModel);
}

[HttpPost]
public JsonResult ConnectToServer(string servername) {
    return Json(new {
        foo = "bar", baz = "Blech"
    });
}

private static dynamic GetServers() {
    var piSystems = new PISystems().Select(c => new Afart {
        Id = c.Name, ServerName = c.Name
    });
    return new SelectList(piSystems, "Id", "ServerName");
} 

public class Afart
    {
        public string Id { get; set; }

        public string ServerName { get; set; }
    }  

最佳答案

我发现了问题。 javascript 没有在局部 View 中被调用,它直接进入 Controller 操作并返回而不重新加载 viewbag 数据。

关于c# - 单击按钮时模型为空 ASP.NET MVC 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740849/

相关文章:

c# - 获取.MP4文件中的音频和视频流计数及其属性

C# SHA1 与 PHP SHA1 ...不同的结果?

javascript - feedback.js 服务器 api

asp.net - ServiceStack 示例应该以什么顺序进行处理?

javascript - Google map js api 在纯 html 页面中工作正常,但在 asp.net mvc 页面中不起作用

c# - 在第一次调用 dll 时执行代码

C# IFilterSample,任何人都可以让它工作吗?

javascript - Google Places API 错误

javascript - 具有远程数据的 jQuery AutoComplete 获取错误的 url

css - asp.net mvc 模型的 EF Code First 模型更改后,如何在 Azure 中正确更新 SQL 数据库?