【问题标题】:How to get value from dropdownlist and assign to an object in MVC如何从下拉列表中获取值并分配给 MVC 中的对象
【发布时间】:2017-06-15 21:38:59
【问题描述】:

我对 MVC 很陌生。我正在为我的项目开发一个小工具。我想从下拉列表中获取选定的值并分配给一个对象以进一步使用。我的代码如下所示。

查看:

    @model SolutionMasterDataRepl.Models.ReplDataModel

@{
  ViewBag.Title = "Solution Master";
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script>
        $(document).ready(function () {
            $('.btn-toggle').click(function () {
                $(this).find('.btn').toggleClass('active');
                if ($(this).find('.btn-primary').size() > 0) {
                    $(this).find('.btn').toggleClass('btn-primary');
                }
                if ($(this).find('.btn-danger').size() > 0) {
                    $(this).find('.btn').toggleClass('btn-danger');
                }
                if ($(this).find('.btn-success').size() > 0) {
                    $(this).find('.btn').toggleClass('btn-success');
                }
                if ($(this).find('.btn-info').size() > 0) {
                    $(this).find('.btn').toggleClass('btn-info');
                }
                $(this).find('.btn').toggleClass('btn-default');
            });
        });
    </script>
    <style>
        .form-horizontal{
            margin: 0 auto;
            width: 50%
        }
    </style>
</head>
<body>
    <div class="form-horizontal">
        <fieldset>
            <legend>Data REPL</legend>
            <div class="form-group">
                <label for="selectReplServer" class="col-lg-4">Select REPL Server</label>
                <div class="col-lg-offset-4">
                    <select class="form-control" id="replServer" style="width: 200px">
                        <option>PTW01REPLAP001</option>                                            
                    </select>
                    @Html.DropDownListFor(m => m.SelectedReplDatabase, Model.ReplDatabase, "Select REPL Server")
                </div>                
            </div>

型号:

    public class ReplDataModel
  {
    public SelectList ReplDatabase { get; set; }
    public string SelectedReplDatabase { get; set; }
  }

控制器:

public class HomeController : Controller
  {
    string replDatabase = string.Empty;
    // GET: Home
    public ActionResult Index()
    {
      return View();
    }

    [HttpPost]
    public ActionResult GetReplDatabase(ReplDataModel model)
    {
      replDatabase = model.SelectedReplDatabase;
      return View(model);
    }
  }

我在这里得到空引用异常: @Html.DropDownListFor(m =&gt; m.SelectedReplDatabase, Model.ReplDatabase, "Select REPL Server") 你们能帮我解决错误并建议从下拉列表中分配值的更好方法吗?

【问题讨论】:

  • 您没有在控制器操作中设置 Model 和 Model.ReplDatabase 的值。
  • 您没有将模型传递给您的视图,所以Model.ReplDatabasenull。您需要初始化ReplDataModel 的新实例,填充ReplDatabase 属性并将其返回到视图(并且您还需要在POST 方法中重新填充它。但是您要在这里做什么。一个新控制器是初始化每个调用,以便在 POST 方法中返回视图后,replDatabase 的值就会丢失
  • 谢谢大家..它成功了

标签: c# asp.net-mvc


【解决方案1】:
public class HomeController : Controller
  {
    string replDatabase = string.Empty;
    // GET: Home
    public ActionResult Index()
    {
      ReplDataModel Model = new ReplDataModel();
      return View(Model);
    }

    [HttpPost]
    public ActionResult GetReplDatabase(ReplDataModel model)
    {
      replDatabase = model.SelectedReplDatabase;
      return View(model);
    }
  }

您没有在 Get 方法中传递 Model 值,并在 post 方法中检查 replDatabase。你没有分配任何东西。

【讨论】:

  • 不提... :)
猜你喜欢
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多