- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个下拉列表(客户)和复选框列表(销售订单),具体取决于当前选择的客户。如果我选择一个新客户,我希望复选框会被清除,但是尽管在回发中清除了模型,但它们会从一个到另一个保持不变。
我不是经验丰富的 MVC 开发人员,但我不确定为什么会这样。在调试我发送回 View 的 ViewModel 时,它显示所有复选框的 IsSelected = false,但在 View 中,它们被选中。我究竟做错了什么? (提前致谢)
查看模型:
namespace MvcTest1.Models
{
public class Customer
{
public int CustomerID { get; set; }
public string Name { get; set; }
}
public class SalesOrder
{
public int SalesOrderID { get; set; }
public string Reference { get; set; }
public bool IsSelected { get; set; }
}
public class SalesOrderPageViewModel
{
public List<Customer> Customers { get; set; }
public int SelectedCustomerID { get; set; }
public List<SalesOrder> SalesOrders { get; set; }
}
}
Controller :
namespace MvcTest1.Controllers
{
public class SalesOrderPageController : Controller
{
[HttpGet]
public ActionResult Index()
{
SalesOrderPageViewModel viewModel = BuildViewModel(1);
return View(viewModel);
}
[HttpPost]
public ActionResult Index(SalesOrderPageViewModel viewModelInput)
{
SalesOrderPageViewModel viewModel = BuildViewModel(viewModelInput.SelectedCustomerID);
return View(viewModel);
}
public SalesOrderPageViewModel BuildViewModel(int customerID)
{
SalesOrderPageViewModel viewModel = new SalesOrderPageViewModel
{
Customers = new List<Customer>
{
new Customer { CustomerID = 1, Name = "Alan" },
new Customer { CustomerID = 2, Name = "Bob" },
new Customer { CustomerID = 3, Name = "Charlie" }
}
};
viewModel.SelectedCustomerID = customerID;
if (customerID == 1)
{
viewModel.SalesOrders = new List<SalesOrder>
{
new SalesOrder { SalesOrderID = 11, Reference = "AA11" },
new SalesOrder { SalesOrderID = 12, Reference = "AA22" },
new SalesOrder { SalesOrderID = 13, Reference = "AA33" }
};
}
if (customerID == 2)
{
viewModel.SalesOrders = new List<SalesOrder>
{
new SalesOrder { SalesOrderID = 21, Reference = "BB11" },
new SalesOrder { SalesOrderID = 22, Reference = "BB22" },
new SalesOrder { SalesOrderID = 23, Reference = "BB33" }
};
}
if (customerID == 3)
{
viewModel.SalesOrders = new List<SalesOrder>
{
new SalesOrder { SalesOrderID = 31, Reference = "CC11" },
new SalesOrder { SalesOrderID = 32, Reference = "CC22" },
new SalesOrder { SalesOrderID = 33, Reference = "CC33" }
};
}
return viewModel;
}
}
}
查看:
@model MvcTest1.Models.SalesOrderPageViewModel
@{
ViewBag.Title = "SalesOrderPage";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>SalesOrderPage</h2>
<br /><br />
@using (Html.BeginForm())
{
@Html.DropDownListFor(model =>
model.SelectedCustomerID,
new SelectList(
Model.Customers,
"CustomerID",
"Name",
Model.SelectedCustomerID
),
new { id = "customerSelect" }
);
<script type="text/javascript">
$(function () {
$('#customerSelect').change(function () {
this.form.submit();
});
})
</script>
<br /><br />
for (int i = 0; i < Model.SalesOrders.Count(); i++)
{
@Html.DisplayFor(m => Model.SalesOrders[i].Reference)
@Html.CheckBoxFor(m =>
m.SalesOrders[i].IsSelected
)
<br />
}
}
最佳答案
看起来 Ryan 对 ModelState.Clear() 的看法是正确的。这是一篇解释为什么有必要的文章:
http://patrickdesjardins.com/blog/modelstate-clear-is-required-to-display-back-your-model-object
关于c# - MVC4 : View appears to be maintaining state independently of the controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451291/
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 3年前关闭。 Improve this
作为我不久前写的代码标准文档的一部分,我强制要求“您必须始终对循环和/或条件代码块使用大括号,即使(尤其是)它们只有一行。” 例子: // this is wrong if (foo) //b
我们正在创建一个大项目,该项目将持续存在并改进大约 10 年。 在我们的代码库中,已经有很多针对特定浏览器不兼容性的代码、针对浏览器中不同错误的解决方法、3rd 方工具和库等。代码本身通常运行良好,但
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
感谢您花时间查看我的问题! 假设有一个 Web 服务(restful、SOAP、XML/JSON,无论你想要什么),并且它是一个关于小狗的服务。就本问题而言,小狗可以有两个成员变量。第一个是小狗的唯一
我的类经常有一些属性,而其他对象的属性依赖于这些属性。定义和访问它们的最佳方式是什么?一个最小的例子应该可以解释我的问题。 假设我有一个定义圆的类: class Circle: def __i
在一个应用程序中,我正在逐个读取无向图的顶点,只有当两个顶点都出现时,边才会变得明显。 解析后,我需要快速地逐一迭代图的连通分量。我选择什么算法来在解析时构建连接的组件? (在解析时,因为列出边相当昂
我目前正在将一个 API 从 C# 转换为具有网络组件的 Java。 C# 版本似乎在其类被使用期间保持输入和输出流以及套接字打开。 这是正确的吗? 请记住,应用程序根据用户输入发送命令和接收事件,为
在座的每一位可能对 Googlebot 的工作原理有一定了解的人都可能清楚地看到启动页面会损害网站的 SEO 性能。 但是,我碰巧正在处理一个相当不幸的案例,即必须为我的一个客户实现启动页面。你如何在
我正在尝试使用一些 iPhone Core Data 代码来调试一个非常邪恶的问题。 设置是这样的:我有一个线程来轮询Web服务并通过NSNotification将其结果发送到主线程(在userDic
我正在尝试通过开发类似 Web 应用程序的服务来更加熟悉 Haskell。 假设我正在开发一个网络服务器,并且我想在请求之间保持持久状态;例如,计数器。 Haskell 的做事方式是什么? 我遇到了这
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
所以我尝试为 List 创建一些基本的扩展方法。本质上我有一个 UniqueAdd 和 UniqueAddRange。它会在添加之前检查一个值是否存在,如果它已经在列表中,它就不会添加它。这是代码:
考虑一个具有可比较字段(与 equals 一致)和不可比较字段(我不知道它是否覆盖 Object#equals 的类)的类。 应比较类的实例,其中结果顺序应与相等一致,即 0 返回 iff 两个字段相
我试图将页脚设置在页面底部,并且我设法使用 CSS 属性“position:fixed”和“bottom:0”做到了这一点。但是,通过这样做,我的两个页脚 DIV 之间不再有空格。我一直在解决这个问题
目标:通过一个连接和多个 session 或一个持久 session 远程控制 ssh 服务器。 问题 1:我目前使用 sshj 通过 SSH 进行一些远程控制,它运行良好,但我似乎无法让它正确处理提
我有一个 Controller ,其中包含一些私有(private)只读接口(interface)属性,它需要这些属性才能通过调用服务来获取数据,然后用于填充模型等 private readonly
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我 fork 了一个上游仓库,克隆了它,并创建了一个分支来处理一些事情 完成分支编码后,我创建了一个 merge 请求。但是在页面上有一个复选框“允许维护者编辑”? 这是什么意思?这是否意味着上游
我正在将 Kohana v3 用于 Web 项目,今天我发现自己在写这个: echo Html::anchor('user/view/'.$user->id, "See user's profile"
我是一名优秀的程序员,十分优秀!