小编Mar*_*ark的帖子

使用反射从复杂类中获取值

我有一个类,它是从一个 xml 字符串创建和填充的,为了示例目的,我已经简化了它:

[XmlRoot("Person")]
public sealed class Person
{
    [XmlElement("Name")]
    public string Name { get; set; }

    [XmlElement("Location")]
    public string Location { get; set; }

    [XmlElement("Emails", Type = typeof(PersonEmails)]
    public PersonEmails Emails { get; set; }
}

public class PersonEmails
{
    [XmlElement("Email", Type = typeof(PersonEmail))]
    public PersonEmail[] Emails { get; set; }
}

public class PersonEmail
{
    [XmlAttribute("Type")]
    public string Type { get; set; }

    [XmlText]
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

为了提取信息,我试图将它们加载到另一个类中,这很简单:

public class TransferObject
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# xml reflection

5
推荐指数
1
解决办法
6100
查看次数

MVC提交具有部分视图的表单

如果之前已经回答道歉,我找不到与我的问题相符的任何内容.

我有一个包含部分视图的视图,在提交视图时,部分视图中的数据不会发送到控制器.我理解如果我使用编辑器模板,这应该可以工作,但是我无法使用它,因为我需要来自Partial内部主模型的数据.

我的创建视图(简化):

@model CreateXmlSchemaModel
@using (Html.BeginForm("Create", "XmlSchema", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <div class="editor-label">
            @Html.LabelFor(m => m.XmlSchema.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(m => m.XmlSchema.Name)
        </div>
        <div id="fieldmapping">
            @Html.Partial("_XmlFieldMapping")
        </div>
        <div>
            <input type="submit" value="Create" class="button" />
        </div>
    </fieldset>
}
Run Code Online (Sandbox Code Playgroud)

我的模型结构(简化):

public abstract class XmlSchemaModelContainerBase
{
    public IEnumerable<string> BusinessObjects { get; set; }
    public IEnumerable<XmlInputFieldModel> XmlFields { get; set; }
    public IEnumerable<string> BusinessObjectFields { get; set; }
}

public class XmlSchemaModelContainer : XmlSchemaModelContainerBase
{
    public XmlSchemaModel XmlSchema { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-4

5
推荐指数
1
解决办法
7697
查看次数

XML反序列化缺少的元素

我正在将一些XML反序列化到我的课程中,这一切都很好.我想要发生的是,如果XML不包含我的一个类属性的元素,而不是将该属性设置为null,我希望它相当于String.Empty.

例如,这是XML:

<Person>
    <Title>Mr</Title>
    <FullName>John Smith</FullName>
</Person>
Run Code Online (Sandbox Code Playgroud)

这是班级:

[XmlRoot("Person")]
public sealed class PersonObject
{
    [XmlElement("Title")]
    public string NamePrefix { get; set; }

    [XmlElement("FullName")]
    public string FullName { get; set; }

    [XmlElement("JobTitle")]
    public string JobTitle { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

目前,如果我反序列化到此对象,JobTitle将设置为null.我希望将其设置为空字符串,就像我在XML中传递JobTitle一样,但将值设置为空.

是否可以使用序列化方法中的某种属性来执行此操作?

c# xml asp.net serialization

3
推荐指数
1
解决办法
5964
查看次数

MVC OrderBy EditorFor IEnumerable

我刚刚注册了,这是我的第一篇文章,所以如果问题不是最好,请耐心等待.我看了一下,找不到符合我要求的答案; 这可能是因为不可能实现我想要的.

我有一个局部视图,它从视图模型中提取了一个IEnumerable的EditorFor字段列表:

@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata)
Run Code Online (Sandbox Code Playgroud)

DocumentViewModelContainer具有以下代码:

public class DocumentViewModelContainer
{
    public DocumentViewModel Document
    {
        get;
        set;
    }
Run Code Online (Sandbox Code Playgroud)

DocumentViewModel具有以下代码:

public class DocumentViewModel
{
    public IEnumerable<DocumentMetadataFieldViewModel> Metadata
        {
            get;
            set;
        }
}
Run Code Online (Sandbox Code Playgroud)

在这两个视图模型中都有大量其他对象,我在这个问题中忽略了这些对象.DocumentMetadataFieldViewModel由几个标准类型的字段组成(int,字符串等)

我想要实现的是通过底层视图模型中的对象排序将OrderBy添加到此列表中,如下所示:

@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata.OrderBy(i => i.InstanceFieldOrder))
Run Code Online (Sandbox Code Playgroud)

但是这会给出错误:

System.InvalidOperationException : Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Run Code Online (Sandbox Code Playgroud)

我不仅对MVC很新,而且对C#来说也是如此; 这个项目让我在飞行中学习语言,所以请玩好:)

谢谢,

标记

ienumerable editorfor asp.net-mvc-partialview asp.net-mvc-3

2
推荐指数
1
解决办法
1603
查看次数