首页 \ 问答 \ 在编辑结果数据中的MVC3的Controller中没有传递回View(In the Controller of the MVC3 in the Edit Result Data not being passed back to the View)

在编辑结果数据中的MVC3的Controller中没有传递回View(In the Controller of the MVC3 in the Edit Result Data not being passed back to the View)

我创建了一个下拉列表,可以很好地传递数据。 但是,当我想编辑表单时,GET操作中的旧值不会填充在表单中。 我是MVC的新手,所以一个简洁的例子会很棒。 更新 - 我想我知道最新情况并需要帮助解决。 ddl只包含我的下拉数据,因此我只将下拉数据传递给编辑视图中的模型。 表单的数据在我的代码中的变量模型中,如何在视图中传递ddl和模型?

以下是控制器中的代码

public ActionResult Edit(int id)
        {
            var ddl = new Users();
            ddl.DropDowns = userRepository.Getddl("Departments").Select(c => new SelectListItem
            {
                Value = c.DropdownID.ToString(),
                Text = c.DropdownText
            });
                        var model = userRepository.GetUserId(id);
            return View(ddl);
        }

        [HttpPost]
        public ActionResult Edit(Models.Users users)
        {
            userRepository.UpdateUser(users);
            return RedirectToAction("Index");
        }

视图

@model Models.Users

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <div id="stylized" class="myform">
    <fieldset>
        <legend>User Account</legend>     

        <div class="editor-label">
            @Html.LabelFor(model => model.UserFullName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserFullName)
            @Html.ValidationMessageFor(model => model.UserFullName)
        </div>
       <br/>
        <div class="editor-label">
            @Html.LabelFor(model => model.UserName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserName)
            @Html.ValidationMessageFor(model => model.UserName)
        </div>
        <br/>
         <div class="editor-label">
            @Html.LabelFor(model => model.ProfileName)
        </div>
          <div class="editor-field">
       @Html.DropDownListFor(x=> x.DeptID,new SelectList(Model.DropDowns,"Value","Text"),"Select")      

        </div> 

I created a dropdownlist that passes that data fine. However when I want to edit the form the old values in the GET operation wont populate in the Form. I am new to MVC so a concise example would be great. Update - I think I know whats going on and need help solving. The ddl only contains my dropdown data, so I am passing only the dropdown data to the Model in the Edit View. The data for the form is in the variable model below in my code , how can I pass the ddl and the model in the View?

HERES MY CODE IN THE CONTROLLER

public ActionResult Edit(int id)
        {
            var ddl = new Users();
            ddl.DropDowns = userRepository.Getddl("Departments").Select(c => new SelectListItem
            {
                Value = c.DropdownID.ToString(),
                Text = c.DropdownText
            });
                        var model = userRepository.GetUserId(id);
            return View(ddl);
        }

        [HttpPost]
        public ActionResult Edit(Models.Users users)
        {
            userRepository.UpdateUser(users);
            return RedirectToAction("Index");
        }

VIEW

@model Models.Users

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <div id="stylized" class="myform">
    <fieldset>
        <legend>User Account</legend>     

        <div class="editor-label">
            @Html.LabelFor(model => model.UserFullName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserFullName)
            @Html.ValidationMessageFor(model => model.UserFullName)
        </div>
       <br/>
        <div class="editor-label">
            @Html.LabelFor(model => model.UserName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserName)
            @Html.ValidationMessageFor(model => model.UserName)
        </div>
        <br/>
         <div class="editor-label">
            @Html.LabelFor(model => model.ProfileName)
        </div>
          <div class="editor-field">
       @Html.DropDownListFor(x=> x.DeptID,new SelectList(Model.DropDowns,"Value","Text"),"Select")      

        </div> 

原文:https://stackoverflow.com/questions/12913912
更新时间:2022-05-11 12:05

最满意答案

您正在将错误的对象传递给您的视图。 传递从Repositary方法获得的用户对象。 假设您的GetUserID方法返回User类的对象,并且它在您的用户对象中具有DropDowns属性

 public ActionResult Edit(int id)
 {
     var model = userRepository.GetUserId(id);
     model.DropDowns = userRepository.Getddl("Departments").
                                          Select(c => new SelectListItem
        {
            Value = c.DropdownID.ToString(),
            Text = c.DropdownText
        });                      
     return View(model);
 }

You are passing a wrong object to your view. Pass the user obeject which you get from your Repositary method. Assuming your GetUserID method returns an object of User class and it has a DropDowns property in your user object

 public ActionResult Edit(int id)
 {
     var model = userRepository.GetUserId(id);
     model.DropDowns = userRepository.Getddl("Departments").
                                          Select(c => new SelectListItem
        {
            Value = c.DropdownID.ToString(),
            Text = c.DropdownText
        });                      
     return View(model);
 }

相关问答

更多

相关文章

更多

最新问答

更多
  • 如何重新加载下拉列表(How to reload dropdownlist)
  • RStudio:在脚本中保留特殊字符(RStudio: keeping special characters in a script)
  • Powershell的“GetLatest”不会在新的TFS工作区上下载文件(“GetLatest” with Powershell doesn't download files on new TFS workspace)
  • 我如何让JS识别一个由字符组成的数组?(How do I get JS to recognise an array insted of characters?)
  • EF从存储过程中急切加载(EF eager loading from stored procedure)
  • 将输出文件添加到Python扩展(Adding output file to Python extension)
  • 淮北职业技术学院电脑应用专业咋样?
  • 更改默认扩展面板箭头的箭头样式(Change arrow style for default expansion panel arrow)
  • 芜湖计算机(计算机)培训机构(培训班,学校)哪家好
  • 致命错误:使用clang-llvm ASTMatcher时未找到'stddef.h'文件(fatal error: 'stddef.h' file not found when using clang-llvm ASTMatcher)
  • 内容的.NET缓存(Contentful .NET caching)
  • 客户端没有发生WCF回调(WCF callback is not happening in client)
  • 使用friend在全局范围内调用类成员函数会产生27个错误(Calling a Class member function in Global Scope using friend Gives 27 ERRORS)
  • 如何绑定到WPF中的另一个控件属性(How to Bind to Another Control Property in WPF)
  • 南华大学电脑专业,就业好不好
  • 是否存在泄密文件的官方(或常见)文件扩展名或后缀?(Is there an official (or common) file extention or suffix for deflated files?)
  • 在SVM python中只训练一次(Training only once in SVM python)
  • 淘汰自定义绑定光滑js无法正常工作(knockout custom binding for slick js not working)
  • 似乎无法正确地抓住网站“福布斯”(Can't seem to scrape the website “Forbes” properly)
  • 无法使用boto.rds2从describe_instance方法检索有关db实例的信息(Not able to retrieve information about db instances from the describe_instance method using boto.rds2)
  • 转换为英国日期格式问题(Convert to british date format issue)
  • 在表中列出不同的元组(10种方法)(List distinct tuples in a table(SQL query)(10 ways))
  • OrientDB查询比较(OrientDB query compare)
  • 全局变量有什么不好?(What is so bad about global variables? [duplicate])
  • 为什么JavaMail Transport.send()是一个静态方法?(Why is JavaMail Transport.send() a static method?)
  • 获取最近3个Instagram图像张贴在一个地方(Get last 3 instagram images posted in a place)
  • 使用libnfc格式化/读/写NDEF Mifare 1K卡(Format/Read/Write NDEF Mifare 1K Card using libnfc)
  • 阻止谷歌索引特定图像(Block Google from indexing a particular image)
  • 消息模板接收让Dispatcher没有订阅频道(Message Template receive gives Dispatcher has no subscribers for channel)
  • OpenShift:使用自定义节点版本(OpenShift: Use custom node version)