- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ItemsController,它带有一个 Index 操作,可以在客户端返回和呈现项目,例如
return View(itemViewModels);
每个 itemViewModel 都有一些 Bootstrap 选项卡。在每个选项卡中呈现一个 partialView。
当用户编辑 partialView 并将数据发送到 Tab1Controller 时,我如何返回整个 itemViewModel 的 View ,显示其中的一个局部 View 的验证错误标签 1?
我已经使 View 工作请求/响应发送的 itemViewModel 但随后只返回单个项目的 html 而不是完整的项目 html。
并且当我将索引 View 返回到 ItemsViewModels 时,我无法返回我传递的 itemViewModels 以显示验证错误。
[HttpGet]
public ActionResult Index(ItemViewModel viewModel)
{
return View("ItemsViewModels", viewModel);
}
此代码不起作用,因为 View 与 View 模型类型不匹配。
但我需要显示 ItemsViewModels 的 Html 以及单个编辑的 itemViewModel 的无效(data-val 属性)html。
我不能发布和返回 ItemsViewModels,因为它有许多其他属性会使模型状态无效...
你有什么想法吗?
更新
我不允许使用 ajax,否则问题会很快解决...这是针对一个普通网站,客户希望回发没有 ajax/SPA 行为。
此刻我再次从服务中获取整个项目并呈现它,但随后每个 ItemViewModel 的 html 都有一个无效的,例如文本框。但我希望只有某个 ItemViewModel 是无效的。
[HttpPost]
public virtual async Task<ActionResult> SaveLanguage(ItemViewModel itemViewModel)
{
var viewModels = GetItemsViewModelsFromSErvice();
viewModels.Items.ElementAt(0).Settings = itemViewModel;
return View(MVC.Test.Items.Views.Index,viewModels );
}
最佳答案
如果您被迫进行完整的回发,但每个部分 View 只包含一个包含该 1 项元素的表单,那么您必须在返回之前在 Controller 中重建其他项。
你的 Controller 方法应该是这样的
public ActionResult Index()
{
var vm = GetAllItems(); //method to get all your items for first load
return View(vm);
}
[HttpPost]
public ActionResult Index(ItemViewModel viewModel)
{
//get the full list of items, and then replace just the altered one
var vm = GetAllItems(); // assume returns a list
var index = vm.FindIndex(x => x.ID == viewModel.ID);
vm[index] = viewModel;
//might have to rename items in the ModelState.Errors dictionary
//so they are associated with the correct item index.
//first get the list of errors. As viewModel is not a list for this method
//they will have keys like "PropertyName".
//For a listItem need renaming to something like "[#].PropertyName" (# = index)
var errs = from ms in ModelState
where ms.Value.Errors.Any()
let fieldKey = ms.Key
let errors = ms.Value.Errors
from error in errors
select new {fieldKey, error.ErrorMessage};
//clear the ModelState, and then re-add any model-errors with the renamed key
ModelState.Clear();
foreach(var item in errs)
{
ModelState.AddModelError(
String.Format("[{0}].{1}", index, item.fieldKey), item.ErrorMessage);
}
return View("ItemsViewModels", vm);
}
此外,您可能需要重命名表单元素,以便模型绑定(bind)器在回发后将它们视为列表项。不过,我不是 100% 确定这是必要的。
如果你可以使用 ajax,这会变得更整洁......
看起来您的索引模型是 List<ItemViewModel>
然后您的主视图 (Index.cshtml) 将类似于..
@model List<ItemViewModel>
...
@for(int i = 0; i < Model.Count; i++)
{
<div id="@String.Format("partialContainer{0}", Model[i].ID)">
@Html.Partial("Partial1", Model[i])
</div>
}
(注意容器 div 的 ID 是我们可以作为 ajax 更新目标引用的东西)
然后让您的部分 View 使用相关的部分模型
例如 Partial1.cshtml:
@model ItemViewModel
... etc
@using (Ajax.BeginForm("RefreshPartial", "Home", null, new AjaxOptions() {
UpdateTargetId = String.Format("partialContainer{0}", Model.ID), HttpMethod = "Post" }, null))
{
@Html.TextBoxFor(m => m.Property1);
@* form controls... *@
<input type="submit" value="Submit" />
}
关于asp.net-mvc - 返回一个 View 模型类型与传递的不同的 mvc 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479955/
我正在尝试编写一个相当多态的库。我遇到了一种更容易表现出来却很难说出来的情况。它看起来有点像这样: {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE
谁能解释一下这个表达式是如何工作的? type = type || 'any'; 这是否意味着如果类型未定义则使用“任意”? 最佳答案 如果 type 为“falsy”(即 false,或 undef
我有一个界面,在IAnimal.fs中, namespace Kingdom type IAnimal = abstract member Eat : Food -> unit 以及另一个成功
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
在 C# 中,default(Nullable) 之间有区别吗? (或 default(long?) )和 default(long) ? Long只是一个例子,它可以是任何其他struct类型。 最
假设我有一个案例类: case class Foo(num: Int, str: String, bool: Boolean) 现在我还有一个简单的包装器: sealed trait Wrapper[
这个问题在这里已经有了答案: Create C# delegate type with ref parameter at runtime (1 个回答) 关闭 2 年前。 为了即时创建委托(dele
我正在尝试获取图像的 dct。一开始我遇到了错误 The function/feature is not implemented (Odd-size DCT's are not implemented
我正在尝试使用 AFNetworking 的 AFPropertyListRequestOperation,但是当我尝试下载它时,出现错误 预期的内容类型{( “应用程序/x-plist” )}, 得
我在下面收到错误。我知道这段代码的意思,但我不知道界面应该是什么样子: Element implicitly has an 'any' type because index expression is
我尝试将 SignalType 从 ReactiveCocoa 扩展为自定义 ErrorType,代码如下所示 enum MyError: ErrorType { // .. cases }
我无法在任何其他问题中找到答案。假设我有一个抽象父类(super class) Abstract0,它有两个子类 Concrete1 和 Concrete1。我希望能够在 Abstract0 中定义类
我想知道为什么这个索引没有用在 RANGE 类型中,而是用在 INDEX 中: 索引: CREATE INDEX myindex ON orders(order_date); 查询: EXPLAIN
我正在使用 RxJava,现在我尝试通过提供 lambda 来订阅可观察对象: observableProvider.stringForKey(CURRENT_DELETED_ID) .sub
我已经尝试了几乎所有解决问题的方法,其中包括。为 提供类型使用app.use(express.static('public'))还有更多,但我似乎无法为此找到解决方案。 index.js : imp
以下哪个 CSS 选择器更快? input[type="submit"] { /* styles */ } 或 [type="submit"] { /* styles */ } 只是好
我不知道这个设置有什么问题,我在 IDEA 中获得了所有注释(@Controller、@Repository、@Service),它在行号左侧显示 bean,然后转到该 bean。 这是错误: 14-
我听从了建议 registering java function as a callback in C function并且可以使用“简单”类型(例如整数和字符串)进行回调,例如: jstring j
有一些 java 类,加载到 Oracle 数据库(版本 11g)和 pl/sql 函数包装器: create or replace function getDataFromJava( in_uLis
我已经从 David Walsh 的 css 动画回调中获取代码并将其修改为 TypeScript。但是,我收到一个错误,我不知道为什么: interface IBrowserPrefix { [
我是一名优秀的程序员,十分优秀!