包含多个对象的ViewModel的模型绑定
我有一个类型的productListingViewModel的强烈键入视图,进而包含productViewModel. (两个自定义视图型号). 我的页面上有一些形式元素,这些元素像这样创建: m.ProductViewModel.CategoryId, Model.Categories)%> 生成HTML: 使用默认模型绑定,我期望我将接受类型productListingViewModel的参数发布到控制器操作时,它知道将填充productviewModel.CategoryId使用相关数据. 选择列表的名称似乎表明它知道有一个带有类别属性的productViewModel,但是当我发布到控制器方法时,productViewModel是null.如果我在构建ProductLis
8 2024-04-26
编程技术问答社区
如何将数据从Razor View Kendo UI DropDownList传递到控制器变量?
vs'12,kendoui,asp.net C#mvc4互联网应用程序EF代码首先 希望从剃须刀视图 来查看如何传递值将kendoui下拉列表形成MVC控制器 控制器 [HttpPost] //[AcceptVerbs(HttpVerbs.Post)] public ActionResult Index(ViewModelCCTRST model) //, FormCollection values) { if (ModelState.IsValid) { string clt = model.Clients; string cnt = model.Countys; string twn = model.TownShips; ... ... //string xx
8 2024-03-15
编程技术问答社区
asp.net core mvc中的Model和ViewModel有什么区别?
我有帐户模型的帐户类. public class Account { [Key] public Int64 UID { get; set; } [Required] public string ID { get; set; } [Required] public string PassWord { get; set; } [Required] public string UserName { get; set; } } 我的项目不是一个代码第一个项目,这是数据库"帐户"的模型类. ,但我在登录视图,字符串ID和字符串密码中仅使用两个属性. 因此,当我检查模型验证时,我无法在登录控制器中使用modelState.isvalid(),因为我使用 只有两个属性... 所以我对此进行了搜索,现在我发现了" ViewModel",这是查看的模型类. 然后我创建了一个新的类'accountViewMod
22 2024-03-14
编程技术问答社区
MVC 4文本框在回传时不更新
我的表单使用模型视图对象,该对象不会在提交表单的寄发后更新文本框值.提交表单时,我将绑定到文本框的对象的属性编辑.当表单返回时,对象属性仍会更改,但是文本框值不会更改.就像文本框值是缓存的,不会更改.我该如何解决? textbox默认值:"" 文本框代码: @Html.TextBoxFor(m => m.Project.tNumber, new { @readonly = "readonly", @class = "readonly" }) 对象属性: [Display(Name = "T Number")] [DisplayFormat(ConvertEmptyStringToNull = false)] public string tNumber { get; set; } 控制器动作方法: [Authorize(Roles = "Admin, OrderEntryManager")] [HttpPost] public ActionResult
4 2024-03-13
编程技术问答社区
KnockoutJS和PubSub在视图之间更新可观察数组
我有两个modalviews - MyModalViewA(父)和MyModalViewB(child). MyModalViewA spawns MyModalViewB作为自定义绑定,还有可观察的数组,我需要更新.看起来像: (function () { 'use strict'; var window = __webpack_require__(/*! window */ 10), _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), ko = __webpack_require__(/*! ko */ 3), key = __webpack_require__(/*
2 2024-03-07
编程技术问答社区
为什么AngularJS被认为是MV*?
我曾在后端(Rails)上与MVC合作,目前正在与前端(Angular)上的MVC(MV*)合作.我把角视为MV*模式,但是为什么要确切地考虑它? 使用Angular,我了解关注点的分离,视图(模板),控制器和使用服务来提供数据.在这种情况下,通过NG模型的模型(数据存储)对于前端临时存储是有意义的,但是实际的持久性(当对API做出帖子或投票时)似乎是通配符.由于数据可以持续的方式,因此可以用不同的处理(数据库,firebase等)处理. . 在我看来, *VC基于我的理解更合适,因为角度的控制器比模型更好地定义了. 我缺少或困惑的MV*模式必须有一些核心,任何澄清都非常感谢. 解决方案 以下几种方法*可以在Angular中选择: 控制器: $控制器 查看模型: 主持人: webgl directive 呈现-abstraction-controller 模块per iframe 重要的是,UI和模型是共同点.构建有
2 2024-03-03
编程技术问答社区
ModelView到ModelView的通信
请,您建议的是以下方案最好的(就建筑质量而言)的方法: modelViewa(parent) - 需要从ModelViewB收集来显示数据 - 即使集合保持不变 modelViewB(儿童) - 持有项目的收集.该集合在概念上属于ModelViewB,主要在此(模型)视图中修改.但是,ModelViewa还可以修改集合 我采用的当前方法是在ModelViewB中收集,并在ModelViewa中进行副本.使用消息总线(MMVM Light Toolkit),我的ModelViews相互通知彼此.但是,这让我感到尴尬,因为我保留了重复的收集并同步它.我宁愿只在一个地方将其从ModelViewa和B中访问. 我当时认为也许将一个模型视图注入另一个模型,但这会增加耦合,并且通常对MVVM模式感到错误.我也可以仅使用对两个模型视图的静态引用,因为我拥有持有参考文献的静态定位器(也来自MVVM Light Toolkit). 也许有更好的解决方案? 谢谢, o 解
6 2024-03-03
编程技术问答社区
Android JetPack的共享ViewModel生命周期
文档体系结构/ViewModel#共享描述了我们如何在不同片段上共享相同的ViewModel. 我在我的单个活动中有一些复杂的页面带有容器和标签片段的应用程序.每个这样的页面都有自己的ViewModel,应与所有包含的片段共享. 这里的关键技巧是使用活动而不是片段来保持我的ViewModel. 问题在于我的活动可以具有多个具有自己模型的页面,并且始终保持特定页面的视图模型是浪费设备资源. 有什么方法可以在用户离开页面时控制ViewModel的生命周期? 我想使用容器片段而不是活动: model = ViewModelProviders.of(getPageContainerFragment()).get(SharedViewModel.class); ,但发现这个想法不太好,因为所有孩子的碎片都应该知道父母可能不太好. 有其他选择可以正确解决这种情况吗? 解决方案 由于您使用的是Android JetPack,我可以假设您还使用导航组
对象更新后通知PropertyChanged
我想以一种优雅的方式更新我的listView. 这是我的代码: ObservableCollection tracks = new ObservableCollection(); Track track = new Track(); Tracks.AddRange(track); // collection add a track, and list view updates too Task.Factory.StartNew(() => track.GetInfo(); // this operation might require some times to update // here I need to notify that my object is updated ); 我如何强制更新我的观测值内部对象的绑定? 这是我的usercontrol.xaml
8 2023-12-14
编程技术问答社区
QTreeView或QTreeWidget
我想在我的程序中实现一棵带有嵌套子级别的树,我正在寻找这两种(视图/小部件)中的哪一种最适合我的目标. 我有一个任务的列表,这些任务要么完成/错过/失败,每个任务都有完成/错过/失败的次数,最后是当天的分数. 我想像这样显示: 我使用qtreewidget在qtcreator中进行了此示例,但是我担心很难修改元素,因为它们存储在其他地方. 我的担心是理性的吗?我应该去模型/视图结构,还是可以轻松使用Qtreewidget?树将记录任务,因此将不断变化.元素只会添加到其中,而不会删除.日子将从最低最高的(第2天都是第一,然后是第1天) 解决方案 如果您的数据存储在数据库模型中,或者您想拥有单个数据模型并以不同的方式显示它,那么您绝对最好使用QTreeView. 但QTreeWidget具有某种方式,以及在索引中处理模型的方法.通常,如果您只想要易于工作的东西,则可以使用窗口小部件. 但是模型/视图方法更一般和灵活的IMO.您可以创建自己的模型子类并查
14 2023-10-26
编程技术问答社区
如何在Java Swing中正确设计一个MV应用程序?
我正在尝试在Java Swing中设计MV(模型视频程序)应用程序.我在为每个ViewController分配正确的模型时遇到了麻烦. 这是我当前的设计(不是实际名称): 这个想法是我有两种视图:GUI和一个MIDI设备. 每个视图都有相应的模型.但是,GUI(Buttonbar)的一部分需要访问MIDI设备模型. 目前,我的解决方案是将Mididevice模型传递到Mainwindow的构造函数,然后让其将其传递给Mypanel构造函数,然后将其传递给纽扣栏...对我来说,这会闻到不良的设计和将来的复杂性. 您建议哪种更好的方法? 解决方案 一种方法是让设备视图和/或模型导出 JHotDraw ,引用此处,如讨论
12 2023-10-11
编程技术问答社区
排序QtTableModel-QTableView不会被更新
我实现了一个自定义QAbstractTableModel,我正在为我的数据对象使用std::vector. 现在,我想实现sort()方法,以通过列对我的表排序. 这基本上就是我要做的: void SBStateTableModel::sort (int column, Qt::SortOrder order) { emit layoutAboutToBeChanged(); switch (column) { case Address: if (order == Qt::DescendingOrder) std::sort(states.begin(), states.end(), addr_comp_desc); else std::sort(states.begin(), states.end(), addr_comp_asc); default: return; } emit layoutChanged()
14 2023-09-07
编程技术问答社区
如何在 pyqt 中使用 Qtableview /QAbstractTableModel 来存储和检索自定义数据(使用 QtCore.Qt.UserRole?
我在使用模型/查看框架方面很新,我遇到了一些麻烦, 我在小部件上使用qtableView和qabstracttablemodel 我正在尝试使用qabstracttablemodel的"数据"方法将一些自定义数据存储在Qmodelindex中,类似的东西: class myTableModel(QtCore.QAbstractTableModel): def __init__(self, parent = None): QtCore.QAbstractTableModel.__init__(self, parent) self.elements = [[this is supposed to be initialized at some point]] def rowCount(self, parent = QtCore.QModelIndex()): return len(self.elements) def columnCount(self, p
20 2023-07-25
编程技术问答社区
QDataWidgetMapper 的 Qml 等价物
我有一个基于QABSTRACTITEMMODEL的树和一个QML TreeView以显示其内容.现在,我想拥有一个两部分的UI,其中左侧的TreeView,以及右侧模型的不同字段的一些输入形式.输入字段应连接/映射到TreeView中的当前/选定项目. 在传统的基于qtwidget的代码中,我使用的是qdatawidgetMapper,它的效果很好(现在在qt5中看起来更好). 作为第一个原型,我使用了两个listViews,将秒委托设置为listView的高度和自动滚动. ListView { id: listView2 x: 300 y: 146 width: 263 height: 160 interactive: false flickableDirection: Flickable.VerticalFlick boundsBehavior: Flickable.StopAtBounds s
6 2023-07-25
编程技术问答社区
如何通过模型设置QTableView的列宽?
我将QTableView与QAbstractTableModel的子类一起使用.通过在子分类模型中实现data()和headerdata(),可以控制表的许多属性,例如数据,标题值,字体等. 就我而言,我希望该模型设置每个表列的宽度.如何完成? 解决方案 有两种方法: 在您的模型数据方法中,您可以返回角色sizehintrole. 更好的方法是子类QItemDelegate并覆盖该方法. 请参阅此处( qitemdelemdelegate.htelegate.html/p> 示例 - QSize ItemDelegate::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) const { QSize sz; if(index.column()==2) { return QSize(128, option.re
138 2023-07-17
编程技术问答社区
在QTableView中只有一个复选框列
我在SQLITE数据库中有一个表,我使用QTableView和QSQLQueryModel显示了一个表.第一列需要一个标题是一个复选框,并且列中的所有项目也需要为复选框.我已经将第一列标题作为复选框实现,并且可以很好地工作. 由于需要将列中的复选框居中,因此我使用代表将其绘画.我已经使用以下代码绘制了复选框,但是无法检查或未选中它们.我不知道该如何实施. static QRect CheckBoxRect(const QStyleOptionViewItem &view_item_style_options) { QStyleOptionButton check_box_style_option; QRect check_box_rect = QApplication::style()->subElementRect( QStyle::SE_CheckBoxIndicator, &check_box_style_option); QPoint c
44 2023-07-17
编程技术问答社区
Qt:点击一次后开始编辑单元格
默认情况下QTableView中的单元格在双击后开始编辑.如何改变这种行为. 我需要在一次点击后开始编辑. 我已将组合框委托将其设置为单元格.单击单元格时,仅选择它.双击单元时,QComboBox编辑器将被激活但未扩展.我希望仅在一次单击后就可以扩展它,就好像我添加了setCellWidget QTableWidget的功能.我需要使用Model-View-Delegate产生相同的效果. 解决方案 单击后编辑 您可以在使用 的情况下重新进一步m usepressevent void YourView::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { QModelIndex index = indexAt(event->pos()); if (index.column() == 0) { // column you wan
128 2023-07-17
编程技术问答社区
在模型中使用QTableView
我有QVECTOR cars我想在汽车的注册号上过滤基础.我想创建一个新的过滤向量.我不认为这没关系,因为我迭代了2个向量,从第一个矢量复制到第二个矢量.我在做正确吗? void MainWindow::on_actionBy_registration_number_triggered() { myDialog = new MyDialog(this); myDialog->exec(); QString toSearchString = myDialog->getRegistrationNumber(); QVector founded; QVectorIterator iterator(cars); while(iterator.hasNext()){ Vehicle car = iterator.next(); QString num = car.getReg
12 2023-07-16
编程技术问答社区
如何刷新一个QSqlTableModel,同时保留选择?
我正在使用QSqlTableModel和QTableView查看SQLITE数据库表. 我想每秒左右都有桌子自动刷新(这不会是一个很大的桌子 - 几百行).我可以这样做 - 喜欢: QTimer *updateInterval = new QTimer(this); updateInterval->setInterval(1000); updateInterval->start(); connect(updateInterval, SIGNAL(timeout()),this, SLOT(update_table())); ... void MainWindow::update_table() { model->select(); //QSqlTableModel* sqlTable->reset(); //QTableView* } ,但这可以删除我的任何选择,因此选择只能持续一秒钟.这很烦人,因为GUI中的另一个窗格取决于选择的内容.如果未选择任何
20 2023-07-16
编程技术问答社区