【问题标题】:HTTP Exception was unhandled by user code in MVCMVC 中的用户代码未处理 HTTP 异常
【发布时间】:2019-04-11 04:35:32
【问题描述】:

收到此错误:

System.Web.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理 附加信息:DataBinding:“Final.Models.Hello”不包含名为“700”的属性。

我通过谷歌搜索了一些答案,但我仍然感到迷茫。

模型类:

public Hello () {

           db = new ExtensionDBEntities();
        }

public List<Hello> getID()
        {
            var que = (from rel in db.Table1
                       select new Hello
                       {
                           ID = rel.ID
                       }).ToList();
            return que;
        }

public List<Hello> getStuff()
        {
            var que = (from wre in db.View
                       select new Hello
                       {
                           ID = wre.ID,
                           Summary = wre.Summary,
                           Description = wre.Description

                       }
         }

getHello() 与 getStuff() 方法完全相同,只是接受一个字符串 ID 参数。

控制器类:

public ActionResult Index()
        {
           var model = test.getStuff();
           ViewBag.Releases = new SelectList(test.getID(), "", "ID");
           ViewBag.Managers = new SelectList(test.getManagers(), "", "Managers");
            return View("");
        }

        [HttpPost]
        public ActionResult Selection()
        {
            string selectedId = Request["IDText"].ToString();
            string Managers = Request["ManagersText"].ToString();
            var model = test.getStuff();
            ViewBag.Releases = new SelectList(test.getID(), selectedId, "ID");
            ViewBag.Managers = new SelectList(test.getManagers(), Managers, "Managers");
            var que = test.getHello(selectedId, Managers);
            return View(que);
        }

索引视图类:

 $(document).ready(function () {
   $("#Releases").on("change", function () {
                var value = $('#Releases :selected').text()
                $("#IDText").val(value);
            });
            $("#Managers").on("change", function () {

                var value = $('#Managers :selected').text()
                $("#ManagersText").val(value);
            });

});
@using (Html.BeginForm("Selection", "Sample", FormMethod.Post))
 {
    <div class="container" id='div_release'>

        @Html.DropDownList("Releases", ViewBag.Releases as SelectList)
        @Html.DropDownList("Managers", ViewBag.Managers as SelectList)
        @Html.Hidden("IDText", "")
        @Html.Hidden("ManagersText", "")
        <input type="submit" name="Submit" id="btnUploadData" class="btn btn-primary" value="Upload" />
    </div>
 }

选择视图类:

 <div class="container">
        <table id="myTable" align="left">
            <tr>
                <th>@Html.DisplayNameFor(model => model.ID)</th>
                <th>@Html.DisplayNameFor(model => model.Summary)</th>
                <th>@Html.DisplayNameFor(model => model.Description)</th>
            </tr>

     @foreach (var item in Model)
        {
          <tr id="Home">

              <td>@Html.DisplayFor(x => item.ID)</td>
              <td>@Html.DisplayFor(x => item.Summary)</td>
              <td>@Html.DisplayFor(x => item.Description)</td>
           </tr>
         }

 $(document).ready(function () {
       $("#Releases").on("change", function () {
                    var value = $('#Releases :selected').text()
                    $("#IDText").val(value);
                });
                $("#Managers").on("change", function () {

                    var value = $('#Managers :selected').text()
                    $("#ManagersText").val(value);
                });

    });
    @using (Html.BeginForm("Selection", "Sample", FormMethod.Post))
     {
        <div class="container" id='div_release'>

            @Html.DropDownList("Releases", ViewBag.Releases as SelectList) // Getting the error here....
            @Html.DropDownList("Managers", ViewBag.Managers as SelectList)
            @Html.Hidden("IDText", "")
            @Html.Hidden("ManagersText", "")
            <input type="submit" name="Submit" id="btnUploadData" class="btn btn-primary" value="Submit" />
        </div>
     }
  </table>
 </div>

错误发生在选择视图类中。视图类几乎相同,唯一的区别是选择视图类中显示的数据基于从下拉列表中选择的值。

【问题讨论】:

    标签: javascript jquery ajax asp.net-mvc entity-framework


    【解决方案1】:

    这是一个将视图合并为一个的小提琴的链接:https://dotnetfiddle.net/5uCKhI

    这应该对您有所帮助。如果还有其他问题,请告诉我。

    控制器/模型

    public class caitlinpRealViewModel
    {
        public List<SelectListItem> IDList { get; set; }
        public string selectedId { get; set; }
        public List<SelectListItem> ManagerList { get; set; }
        public string selectedManager { get; set; }
    }
    
    public class HomeController : Controller
    {
        public caitlinpRealViewModel SetupViewModel(caitlinpRealViewModel vm)
        {
            caitlinpRealViewModel viewModel = new caitlinpRealViewModel();
    
            if (vm != null)
            {
                viewModel.selectedId = vm.selectedId;
            }
            else
            {
                viewModel.selectedId = "1";
            }
    
            SelectListItem listItem = new SelectListItem() { Text = "1", Value = "1" };
            SelectListItem listItem2 = new SelectListItem() { Text = "2", Value = "2" };
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(listItem);
            list.Add(listItem2);
    
            if (vm != null)
            {
                viewModel.selectedManager = vm.selectedManager;
            }
            else
            {
                viewModel.selectedManager = "1";
            }
            SelectListItem listItem3 = new SelectListItem() { Text = "aManager", Value = "1" };
            SelectListItem listItem4 = new SelectListItem() { Text = "bManager", Value = "2" };
            List<SelectListItem> list2 = new List<SelectListItem>();
            list2.Add(listItem3);
            list2.Add(listItem4);
    
            viewModel.IDList = list;
            viewModel.ManagerList = list2;
    
            return viewModel;
        }
    
        [HttpPost]
        public ActionResult Selection(caitlinpRealViewModel vm)
        {
            caitlinpRealViewModel viewModel = SetupViewModel(vm);
            return View(viewModel);
        }
    
        public ActionResult Tut135()
        {
            caitlinpRealViewModel viewModel = SetupViewModel(null);
            return View(viewModel);
        }
    

    查看 1

    @model Testy20161006.Controllers.caitlinpRealViewModel
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Tut135</title>
    </head>
    <body>
        @using (Html.BeginForm("Selection", "Home", FormMethod.Post))
        {
            <div class="container" id='div_release'>
                @Html.DropDownListFor(m => m.selectedId, new SelectList(Model.IDList, "Value", "Text"))
                @Html.DropDownListFor(m => m.selectedManager, new SelectList(Model.ManagerList, "Value", "Text"))
                <input type="submit" name="Submit" id="btnUploadData" class="btn btn-primary" value="Upload" />
            </div>
        }
    </body>
    </html>
    

    查看 2(选择)

    @model Testy20161006.Controllers.caitlinpRealViewModel
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Selection</title>
    </head>
    <body>
        <div class="container">
            <table id="myTable" align="left">
                @using (Html.BeginForm("Selection", "Home", FormMethod.Post))
                {
                    <div class="container" id='div_release'>
                        @Html.DropDownListFor(m => m.selectedId, new SelectList(Model.IDList, "Value", "Text"))
                        @Html.DropDownListFor(m => m.selectedManager, new SelectList(Model.ManagerList, "Value", "Text"))
                        <input type="submit" name="Submit" id="btnUploadData" class="btn btn-primary" value="Submit" />
                    </div>
    
                }
            </table>
        </div>
    </body>
    </html>
    

    【讨论】:

    • 是的,我意识到这不会给我错误,但我还需要选择的文本显示在下拉列表中。如果我运行上面的代码,它会给我随机值..跨度>
    • 例如:selectedID:700,经理:Kate [提交]............提交后下拉= selectedID:560 , 经理:随机
    • 我改了答案。
    • 我可以为您提供一切帮助。我得到了和你一样的东西。这是因为,您在与第一页不同的上下文中显示第二页中的下拉菜单。
    • 感谢您的详细回答,但我昨天想出了解决方案。它和你的一样。绝对是相同的概念。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    相关资源
    最近更新 更多