【发布时间】: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 => m.SelectedReplDatabase, Model.ReplDatabase, "Select REPL Server")
你们能帮我解决错误并建议从下拉列表中分配值的更好方法吗?
【问题讨论】:
-
您没有在控制器操作中设置 Model 和 Model.ReplDatabase 的值。
-
您没有将模型传递给您的视图,所以
Model.ReplDatabase是null。您需要初始化ReplDataModel的新实例,填充ReplDatabase属性并将其返回到视图(并且您还需要在POST 方法中重新填充它。但是您要在这里做什么。一个新控制器是初始化每个调用,以便在 POST 方法中返回视图后,replDatabase的值就会丢失 -
谢谢大家..它成功了
标签: c# asp.net-mvc