- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在尝试申请 Darin Dimitrov's answer ,但在我的实现中 bindingContext.ModelName 等于“”。
这是我的 View 模型:
public class UrunViewModel
{
public Urun Urun { get; set; }
public Type UrunType { get; set; }
}
这是发布模型类型的 View 部分:
@model UrunViewModel
@{
ViewBag.Title = "Tablo Ekle";
var types = new List<Tuple<string, Type>>();
types.Add(new Tuple<string, Type>("Tuval Baskı", typeof(TuvalBaski)));
types.Add(new Tuple<string, Type>("Yağlı Boya", typeof(YagliBoya)));
}
<h2>Tablo Ekle</h2>
@using (Html.BeginForm("UrunEkle", "Yonetici")) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Tablo</legend>
@Html.DropDownListFor(m => m.UrunType, new SelectList(types, "Item2", "Item1" ))
这是我的自定义模型 Binder :
public class UrunBinder : DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type type)
{
var typeValue = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Urun");
var model = Activator.CreateInstance((Type)typeValue.ConvertTo(typeof(Type)));
bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, type);
return model;
}
}
最后,Global.asax.cs 中的行:
ModelBinders.Binders.Add(typeof(UrunViewModel), new UrunBinder());
在重写的 CreateModel
函数中,在 Debug模式下我可以看到 bindingContext.ModelName
等于“”。而且,typeValue
为 null,因此 CreateInstance
函数失败。
最佳答案
我认为您不需要 bindingContext.ModelName
属性来完成您要执行的操作。
经过 Darin Dimitrov's answer ,看来您可以尝试以下操作。首先,您需要在表单上为以下类型设置一个隐藏字段:
@using (Html.BeginForm("UrunEkle", "Yonetici")) {
@Html.Hidden("UrunType", Model.Urun.GetType())
然后在您的模型绑定(bind)中(基本上是从 Darin Dimitrov 复制的):
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
var typeValue = bindingContext.ValueProvider.GetValue("UrunType");
var type = Type.GetType(
(string)typeValue.ConvertTo(typeof(string)),
true
);
var model = Activator.CreateInstance(type);
bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, type);
return model;
}
参见 this post有关如何填充 bindingContext.ModelName
的更多信息。
关于c# - bindingContext.ModelName 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369951/
我们遇到了一个 problem哪里 我们在一个 MDI 工作区中有两个相同窗口的实例,它们绑定(bind)到两个单独的对象模型。 对象模型覆盖了它们的 .Equals 和 .GetHashCode 方
我在 App.Xaml 中定义了一个模板 我在我的主页上使用它 我在代码后面设置了我的 Homepage 的 BindingCon
所以我正在尝试申请 Darin Dimitrov's answer ,但在我的实现中 bindingContext.ModelName 等于“”。 这是我的 View 模型: public class
用BindingContext获取当前对象没有问题,但是当我在datagridview中选择了很多行时怎么办?如何遍历每个对象? 最佳答案 这既不轻松也不有趣。默认情况下不支持绑定(bind)数据网格
我有一个可选汽车的主列表,以及一个包含所选汽车 ID 的第二个列表。 public class SelectCarsViewModel : BindableBase { public ILis
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this question 我有
我一直在研究许多不同的 WPF/MVVM 资源中的数据绑定(bind)技术。我认为我对 DataContext 对象的目的和用途有相当强的把握。但后来我遇到了this article on MVVM
在 WPF 中,我使用了以下的正常组合: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d=
我有一个 ViewModel使用不会被调用的命令 ( AddToFavoriteCommand )。现在它只处理 CustomPin class 中的命令。 ,而不是 viewModel .我正在设置
我创建了一个从 SQLite 数据库填充的 ListView 。 XML 看起来像这样:
我有 2 个自定义控件 parent-control 和 child-control。我需要 child 代表 parent 执行功能。要求是 child 应该在 parent 边界内使用。 使用示例
我正在编写一个 bindingHandler 并希望创建一个绑定(bind)上下文,它与 current bindingContext 具有相同的父级/父级上下文。阅读:没有额外的绑定(bind)上下
在 Xamarin Forms 中,我创建了一个包含自定义组件的页面,我想像这样提供一个值: 然而,这不起作用。当我使用原始数字而不是 Binding 时,它会起作用。我发现的问题是,我的自定义组件
我有以下 Contentpage.content,我在其中设置了某些绑定(bind)上下文。 在 Post.xaml.cs (ContentView) 中,我尝试以这种方式获
我是 Xamarin.Forms 的新手,我想使用 MVVM 模式和 XAML 创建一个跨平台应用程序。在我的表单项目 (pcl) 中,我想将我的 MainPage 的 BindingContext
我正在编写 Xamarin 应用程序,我发现了我无法跨越的 WPF 之间的差异。 我正在使用 Xamarin Forms Labs 来获取 Repeater 控件。 我有一个 Repeater,它重复
我有一个带有两个 ContentViews 的 ContentPage,我想将它们每个的绑定(bind)上下文设置为它们各自的 ViewModel(这是我对它们组合的一个庞大的 ViewModel 的
我想通过 xaml 而不是后端代码设置 BindingContext。目前我是这样分配的: public partial class MainPage : ContentPage { publ
我需要绑定(bind) Label 的 TextColor。但是 Label 位于 StackLayout 内,BindingContext 为 SelectedArticle,因此绑定(bind)不
我正在尝试创建一个自定义绑定(bind)处理程序,以将基于 Angular 色的访问权限应用于页面上的字段。在自定义处理程序中,它将检查来自 viewModel 的其他可观察值的值,并根据条件启用或禁
我是一名优秀的程序员,十分优秀!