小编Ahm*_*yas的帖子

MVC4枚举和单选按钮列表

我已经看到了一些线程,但似乎没有一个适用于MVC4,因为RadioButtonFor html扩展方法/帮助程序不存在.

说我有一个枚举列表 - 即航空公司:

public enum Airlines
{
   Unknown = 0,
   BritishAirways = 1,
   VirginAtlantic = 2,
   AirFrance = 3
}
Run Code Online (Sandbox Code Playgroud)

如何将其绑定到我的视图上的单选按钮列表,并能够检索所选项目?如果没有选择,可以说"选择一个项目"怎么样?

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

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

带模型的mvc上传文件 - 第二个参数发布文件为空

我有一个带有1个字符串属性的简单模型,我在一个简单的视图上渲染.

视图如下所示:

@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { encType="multipart/form-data" }))
{
    @Html.TextBoxFor(m => m.FirstName)
    <br /><br />

    <input type="file" name="fileUpload" /><br /><br />
    <input type="submit" value="submit me" name="submitme" id="submitme" />
}
Run Code Online (Sandbox Code Playgroud)

控制器是这样的:

[HttpPost]
public ActionResult UploadFile(UploadFileModel model, HttpPostedFileBase file)
{
   // DO Stuff
   return View(model);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我提交时,模型DOES被填充但第二个参数是HttpPostedFileBase为null.但是,当执行Request.Files时 - 它似乎表明在发布的请求中有一个文件.我怎么能真正得到第二个参数绑定?

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

23
推荐指数
3
解决办法
5万
查看次数

服务器端的Internet Explorer 11检测

我们都知道IE11检测不适用于服务器端语言,因为微软已经删除了IE/MSIE浏览器指示,现在完全是"Mozilla".

我也知道做浏览器检测/版本存在风险,但过去一直很好.

网站的一些要求是这样的:

必须使用某些版本的firefox及以上必须使用某些版本的chrome及以上必须使用某些版本的safari(一些下面和一些较新的)必须使用IE> = 8

所以这就是问题... IE11在我的列表中指出它不受支持.我想从服务器上的东西的Web端支持它(ASP.NET/MVC)

目前尚不清楚如何从服务器端检测到这一点.有谁知道怎么样?

这是IE 11中显示的用户代理:

"像Gecko一样的Mozilla/5.0(Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)"

rv:11.0告诉我们它的IE11,然而对它进行解析仍然意味着,例如,它可能是某个版本的chrome,在这样的要求中甚至不支持firefox.

那么,在这里看看IE 11或更高版本的最佳方式是什么?

我不太确定从"Trident"开始搜索,因为我不知道其他浏览器是否使用它.

欢迎任何方向.

asp.net internet-explorer asp.net-mvc-4

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

WebAPI核心路由问题

所以,我正在使用Web API(ASP.NET Core 2)并遇到路由问题.

我有几个控制器,如:

SchoolController
TeacherController.

两者都有获取: Get(int id)

问题是当我运行它时,我甚至在实际能够调用方法之前就会遇到运行时错误.

Attribute routes with the same name 'Get' must have the same template:
Action: MyProject.WebAPI.Controllers.SchoolController.Get (MyProject.WebAPI)' - Template: 'api/school/{id}'
Action: MyProject.WebAPI.Controllers.TeacherController.Get (MyProject.WebAPI)' - Template: 'api/teacher/{id}'
Run Code Online (Sandbox Code Playgroud)

当控制器应该拥有自己的Get等时,为什么会这样做...所以你可以这样做:

/api/{controller}/1

etc... ?
Run Code Online (Sandbox Code Playgroud)

现在,我还有另一个Get方法,它们都在它们的控制器中但具有不同的方法签名以及不同的HttpGet名称,即:

// TeachersController:

[Produces("application/json")]
[Route("api/teacher")]
public class TeacherController : Controller
{

    // GET: api/Teacher/5
    [HttpGet("{id}", Name = "Get")]
    public IActionResult Get(int id)
    {

        // BLAH
    }
}
Run Code Online (Sandbox Code Playgroud)

并为学校控制员:

[Produces("application/json")]
[Route("api/school")]
public class SchoolController : Controller
{

    [HttpGet("{id}", Name = "Get")]
    public …
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core asp.net-core-webapi asp.net-core-routing

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

app.config的自定义配置 - 部分集合?

我的脑袋非常糟糕!我以前做过这个,但不是"深入"或复杂,我已经尝试了不同的方法来实现这一点,但都失败了.

所以,这是app.config中我想要的自定义XML:

<Profiles> <!--Collection-->
<Profile Name="Live">
   <Components>
    <Component Name="Portal" Type="Web" />
    <Component Name="Comms" Type="Web" />
    <Component Name="Scheduler" Type="WindowsService" ServiceName="LiveScheduler" />
  </Components>
  <Databases>
    <Database Name="Main" Connection="Data Source=.\SQL2008" />
    <Database Name="Staging" Connection="Data Source=SomeSite.co.uk" />
  </Databases>
</Profile>
<Profile Name="Test">
   <Components>
    <Component Name="Portal" Type="Web" />
    <Component Name="Comms" Type="Web" />
    <Component Name="Scheduler" Type="WindowsService" ServiceName="TestScheduler" />
  </Components>
  <Databases>
    <Database Name="Main" Connection="Data Source=.\SQL2008" />
    <Database Name="Staging" Connection="Data Source=Internal" />
  </Databases>
</Profile>
</Profiles>
Run Code Online (Sandbox Code Playgroud)

所以Profile的集合,每个配置文件都有一个子元素集合(Components是一个集合,Component是一个元素)

但是我目前除了多个配置文件之外还有其他所有功能.我有点看到问题,但不知道如何"修复"它.

码:

public class Profile : ConfigurationSection
{
    [ConfigurationProperty("Name", IsRequired=true)]
    public string Name
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# app-config

10
推荐指数
2
解决办法
6493
查看次数

枚举不是序列化

我有一个WCF服务.它与MSMQ绑定,但这不是问题.我可以序列化一个对象,它有一个基类和一个在基类中实现的接口,具体类派生自基类 - 这很好.

但是,当我在基类中有一个枚举并且我设置了该值时,在从MSMQ反序列化/读取之后,该值仍然设置为默认值(即不是在代码中手动设置的值)

有什么想法吗?我甚至将枚举标记为DataContract以及每个具有EnumMember属性的Enum成员.

如何序列化枚举?

c# wcf msmq

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

正则表达式允许使用字母数字的空格

我有这个:

$("#MyInputBox").keypress(function (e) {
  if (e.charCode != 0) {
    var regex = new RegExp("^[a-zA-Z0-9\-\s]+$");
    var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (!regex.test(key)) {
      e.preventDefault();
      return false;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

问题是,它不允许我进入空间.我希望它允许一个空间.其他一切都很好(即我可以输入数字,字母,短划线......但不能输入空格.)

jquery

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

防伪令牌和网络测试

我正在尝试在VS2012中为MVC站点进行Web测试.其中一个方案是登录并浏览产品列表,选择所需产品并按照购买页面进行操作.

问题是,当运行Web测试时,我收到有关防伪标记的错误,并且它不匹配.

如何用防伪令牌进行测试呢?用户必须登录 - 将有数千名用户进行负载测试(最终),但需要首先使其适用于1位用户.

登录视图/操作在控制器的视图和验证中执行AntiForgeryToken.

任何建议和提示表示赞赏.

web-testing antiforgerytoken asp.net-mvc-4

6
推荐指数
1
解决办法
5218
查看次数

在AJAX请求之前单击按钮的客户端验证

我正在使用MVC 4,我希望能够从表中的行集合中验证单行,以确保正确输入字段并通过验证.

属性在模型上正确应用,例如:

[Required]
[MaxLength(50)]
[MinLength(5)]
public string Name {get; set;}
Run Code Online (Sandbox Code Playgroud)

现在,在客户端 - 如何在调用AJAX方法之前启用客户端验证?

为了增加更多的复杂性 - 我有一个按钮,你可以动态地向表中添加一行,填写字段,最后点击更新按钮,它将通过ajax进行POST.但在此帖之前,我想在客户端验证该特定行.

我怎样才能做到这一点?

谢谢

validation asp.net-mvc unobtrusive-validation

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

RDLC报告带有父数据集的子报告?

因此,我试图找出如何执行以下操作:

想象一下,我有很多客户。它包含以下属性:

  • 顾客姓名
  • 账号
  • 总金额

现在,对于每个客户,它都有发票的集合。每个发票包含以下属性:

  • 发票编号
  • 发票日期
  • 应付金额
  • 付款

我有从服务检索的数据并存储在本地。因此,一个客户集合,每个客户都有发票。到目前为止,一切都很好?很容易理解!

现在,我有了一个RDLC,并通过添加数据集(它是代码库中的模型)来显示客​​户集合。很好,绑定并处理和显示我需要的数据。

我现在遇到的困难是如何显示该记录的发票清单(当前客户)。

任何想法如何做到这一点?我什至不知道如何开始或使用什么,所以请不要说“您尝试了什么?” -我什至不知道从哪里开始,因此这个问题是无效的!:-)

目前在表格上我有一个tablix。Tablix指向客户数据集(DataSet1),并添加了字段以显示该数据集的属性值。

接下来,我需要它,以便在tablix或其他内容中提取该记录的发票并将其呈现(带有标题)

我被困住了,希望能向正确的方向提供指导。

呈现报告查看器的代码(这一点现在一点都不重要-这是我遇到的RDLC):

public void RunReport<T>(List<T> reportData, List<ReportParameter> parameters, string reportLayout)
        {
            var viewer = ReportViewerHost.Child as Microsoft.Reporting.WinForms.ReportViewer;
            viewer.Reset();
            viewer.ProcessingMode = ProcessingMode.Local;
            viewer.LocalReport.ReportEmbeddedResource = "PlayPen.ReportLayouts." + reportLayout + ".rdlc";
            viewer.LocalReport.SetParameters(parameters);
            viewer.SetDisplayMode(DisplayMode.PrintLayout);
            viewer.ZoomMode = ZoomMode.PageWidth;
            viewer.LocalReport.DataSources.Clear();
            viewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", reportData));
            viewer.RefreshReport();
        }
Run Code Online (Sandbox Code Playgroud)

调用方式:

this.reportViewer.RunReport(this.OutstandingInvoices, new List<ReportParameters>(), "OutstandingInvoices");
Run Code Online (Sandbox Code Playgroud)

谢谢。

c# reportviewer rdlc

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