标签: asp.net-mvc-3

是否可以使用Razor创建通用的@helper方法?

我正在尝试在Razor中编写一个如下所示的帮助器:

@helper DoSomething<T, U>(Expression<Func<T, U>> expr) where T : class
Run Code Online (Sandbox Code Playgroud)

不幸的是,解析器认为这<T是HTML元素的开头,我最终会出现语法错误.是否可以使用Razor创建一个通用方法的帮助器?如果是这样,语法是什么?

generics asp.net-mvc razor asp.net-mvc-3

86
推荐指数
2
解决办法
2万
查看次数

MVC3 Razor DropDownListFor Enums

试图让我的项目更新到MVC3,我找不到的东西:

我有一个简单的ENUMS数据类型:

public enum States()
{
  AL,AK,AZ,...WY
}
Run Code Online (Sandbox Code Playgroud)

在我的包含此数据类型的模型视图中,我想将其用作DropDown/SelectList:

public class FormModel()
{
    public States State {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

非常简单:当我为这个分部类使用自动生成视图时,它忽略了这种类型.

我需要一个简单的选择列表,当我通过我的AJAX - JSON POST方法点击提交和处理时,将枚举的值设置为所选项.

而不是视图(???!):

    <div class="editor-field">
        @Html.DropDownListFor(model => model.State, model => model.States)
    </div>
Run Code Online (Sandbox Code Playgroud)

提前感谢您的建议!

c# razor asp.net-mvc-3

84
推荐指数
6
解决办法
8万
查看次数

使用"RedirectToAction"从控制器重定向到哈希

您好我想从Mvc Controller返回一个锚点

控制器名称= DefaultController;

public ActionResult MyAction(int id)
{
        return RedirectToAction("Index", "region")
}
Run Code Online (Sandbox Code Playgroud)

这样,当指向索引时,url是

http://localhost/Default/#region
Run Code Online (Sandbox Code Playgroud)

以便

<a href=#region>the content should be focus here</a>
Run Code Online (Sandbox Code Playgroud)

我不是问你是否可以这样做:我如何在我的URL中添加锚标记?

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

84
推荐指数
4
解决办法
2万
查看次数

ActionName的目的

使用"ActionName"属性为操作方法设置别名有什么好处?在为用户提供调用具有其他名称的操作方法的选项时,我真的没有看到它的好处.指定别名后,用户只能使用别名调用操作方法.但如果需要,那么为什么用户不更改操作方法的名称而不是为其指定别名?

我真的很感激,如果有人能够提供一个使用"ActionName"的例子,它可以提供很大的好处,或者最好使用它.

asp.net-mvc asp.net-mvc-3

81
推荐指数
3
解决办法
6万
查看次数

不能隐式地将类型void转换为对象..NET MVC PartialViewResult

我有以下控制器操作:

[ChildActionOnly]
public virtual PartialViewResult ListActions(int id)
{
    var actions = meetingActionRepository.GetAllMeetingActions(id);

    return PartialView(actions);
}
Run Code Online (Sandbox Code Playgroud)

以及以下操作链接(使用t4MVC和razor语法)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>
Run Code Online (Sandbox Code Playgroud)

但是这给了我错误:

不能隐式地将类型void转换为对象

至于我可以告诉控制器动作是好的,那么什么可以给我这个错误?

c# asp.net-mvc t4mvc asp.net-mvc-3

80
推荐指数
4
解决办法
7万
查看次数

如何在mvc3中更改剃刀中LabelFor的显示名称?

在剃刀引擎中,我使用了LabelFor帮助方法来显示名称

但显示名称似乎不好显示.所以我需要更改我的显示名称如何做到....

@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"}) 
Run Code Online (Sandbox Code Playgroud)

html-helper asp.net-mvc-3

80
推荐指数
3
解决办法
12万
查看次数

MVC3删除ModelState错误

我有一个情况,我正在上传用户从他的本地文件系统中选择的图像.在我看来,我的表单基本上有两个提交按钮.一个用于正常提交表单,并执行所有验证.第二个仅用于上传图像,在这种情况下我还不想验证.

我设法关闭客户端验证,给我的"上传图片"提交按钮一个类"取消样式名称",所以

<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" /> 
Run Code Online (Sandbox Code Playgroud)

现在,当我回发时,我的模型有一个属性UploadImageButton,当单击此按钮时,它会填充此属性(输入的名称与属性匹配).这样,我知道表单是由我的真实提交按钮还是由UploadImageButton提交的.

我的问题是这样的......如何关闭ServerSide验证?我不希望在用户单击此按钮时显示验证摘要信息.我知道您可以使用此方法添加自定义模型错误

ModelState.AddModelError("{key}", "{error msg}");
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来删除模型错误.这可能吗?

编辑:

这是我想出的:

foreach (var key in ModelState.Keys.ToList().Where(key => ModelState.ContainsKey(key))) {
     //ModelState.Remove(key); //This was my solution before
     ModelState[key].Errors.Clear(); //This is my new solution. Thanks bbak
}
Run Code Online (Sandbox Code Playgroud)

validation modelstate asp.net-mvc-3

79
推荐指数
5
解决办法
7万
查看次数

如何只允许mvc4 razor中的文本框中的数字

我有3个文本框,其中包含值邮政编码和手机号码和住宅号码.我使用来自Bellow post的jquery获得了仅允许文本框中的数字的解决方案.

我想让EditFor文本框只接受数字

但是我可以使用数据注释来实现这一点,因为我正在使用MVC4剃刀吗?

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

79
推荐指数
8
解决办法
20万
查看次数

胖模型/瘦控制器与服务层

我使用.Net开发了多年的企业应用程序我的应用程序通常有一个包含映射到SQL DB表的实体的域模型.我使用Repository模式,依赖注入和服务层.

最近我们开始研究MVC 3项目,我们讨论了在哪里放置哪些逻辑.我来自瘦控制器/ FAT模型架构,并想知道服务层如何适应

选项1 - 模型与服务的对话

控制器很薄,调用模型上的方法.模型"知道"如何从数据库加载自己并与存储库或服务进行通信.例如,customerModel有一个Load(id)方法,并加载客户和一些子对象,如GetContracts().

选项2 - 控制器与服务对话

Controller要求服务检索模型对象.加载/存储等逻辑在服务层中.该模型是仅具有数据的纯实体模型.

为什么选项1会成为更好的选择,特别是当我们谈论企业应用时,我的经验告诉我要分离问题,让模型和控制器尽可能地薄,并且有专门的服务来做业务逻辑(imcl.数据库交互)

感谢所有建议和对优质资源的参考.

architecture model-view-controller asp.net-mvc service-layer asp.net-mvc-3

78
推荐指数
2
解决办法
2万
查看次数

如何接受数组作为ASP.NET MVC控制器操作参数?

我有一个ASP.net MVC控制器调用Designs,具有以下签名的操作:

public ActionResult Multiple(int[] ids)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用url导航到此操作时:

http://localhost:54119/Designs/Multiple?ids=24041,24117
Run Code Online (Sandbox Code Playgroud)

ids参数始终为null.有没有办法让MVC将?ids=URL查询参数转换为动作的数组?我已经看到过使用动作过滤器的讨论,但据我所知,这只适用于在请求数据中而不是在URL本身中传递数组的POST.

asp.net-mvc-3

78
推荐指数
5
解决办法
6万
查看次数