0

我有一个自定义类 MyCustomType。在那个类中,我有一个 bool 类型的属性 MyCustomProperty 和另一个 bool 类型的 MyCustomProperty1 属性。

我需要检查 MyCustomProperty 在我的视图中是否为真。我正在做以下事情:

<%if ( TempData[ViewDataConstants.MyCustomTypeKey] != null && ((MyCustomType)TempData[ViewDataConstants.MyCustomTypeKey]).MyCustomProperty %>show some custom content.

但是由于某种原因,当我m running it I see error message that MyCustomTYpe could not be found are you missing an assembly reference bla-bla-bla. MyCustomType is in my controller it公开并检查时,我什至添加了对视图的引用。但它一直说没有 MyCustomType 类。我究竟做错了什么?

有趣的是,由于某种原因,当我将它从 Controllers 命名空间移到 Common 时,它突然起作用了。仍然不明白为什么它在 Controllers 命名空间中不起作用。两个命名空间都明确包含在视图中。

4

1 回答 1

1

不知道为什么它不起作用,但老实说,将所有这些代码放在视图中对我来说是错误的。也许它就像我一样,Visual Studio 不喜欢在视图中编写 C# 代码:-)。

这应该是您的视图模型上的一个属性:

public class MyViewModel
{
    public bool MyCustomProperty { get; set; }
}

并在您的控制器内部:

public ActionResult Foo()
{
    var model = TempData[ViewDataConstants.MyCustomTypeKey] as MyCustomType ?? new MyCustomType();
    var viewModel = Mapper.Map<MyCustomType, MyViewModel>(model);
    return View(viewModel);
}

最后在你的视野中:

<% if (Model.MyCustomProperty) { %>
    show some custom content.
<% } %>

现在您不再需要在视图中使用任何东西、铸件……。

于 2011-02-07T07:28:43.693 回答