小编Mag*_*pie的帖子

使用Web API返回匿名类型

使用MVC时,返回adhoc Json很容易.

return Json(new { Message = "Hello"});
Run Code Online (Sandbox Code Playgroud)

我正在使用新的Web API寻找此功能.

public HttpResponseMessage<object> Test()
{    
   return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)

这会引发异常,因为DataContractJsonSerializer无法处理匿名类型.

我有这个替换此JsonNetFormatter基于Json.Net.如果我使用,这可行

 public object Test()
 {
    return new { Message = "Hello" };
 }
Run Code Online (Sandbox Code Playgroud)

但是我没有看到使用Web API的重点,如果我不回来HttpResponseMessage,我会更好地坚持使用vanilla MVC.如果我尝试使用:

public HttpResponseMessage<object> Test()
{
   return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)

它将整个序列化HttpResponseMessage.

任何人都可以指导我一个解决方案,我可以在其中返回匿名类型HttpResponseMessage

c# json json.net asp.net-web-api

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

中心在UITableViewCell问题中对齐文本

我是Objective-C和iPhone开发的新手,在尝试将文本放在表格单元格中时遇到了一个问题.我搜索了谷歌,但解决方案是针对旧的SDK错误已修复,这些对我不起作用.

一些代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = @"Please center me";
    cell.textLabel.textAlignment = UITextAlignmentCenter;
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

以上内容并非文本的中心.

我也试过了willDisplayCell方法:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.textLabel.textAlignment = UITextAlignmentCenter;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一些旧的解决方案:

UILabel* label = [[[cell contentView] subviews] objectAtIndex:0];
label.textAlignment = UITextAlignmentCenter;
return cell;
Run Code Online (Sandbox Code Playgroud)

这些都不会对文本对齐产生任何影响.我已经没有想法了,任何帮助都会受到最高的赞赏.

提前干杯.

iphone objective-c ios4

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

我可以从Web API访问IIdentity吗?

我正在向现有的MVC应用程序添加一些Web API服务.我有一个模型绑定器,用于我的MVC控制器,以获取存储在CustomIdentity中的用户对象.我正在尝试为我的Web API操作重现这一点.

在我可以使用的MVC控制器或其绑定器中

controllerContext.HttpContext.User.Identity
Run Code Online (Sandbox Code Playgroud)

ApiController没有HttpContext对象.无论如何从Web API访问IIdentity对象?

c# asp.net-web-api

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

在SQL Server中将字符串中每个单词的第一个字母大写的最佳方法是什么?

在SQL Server中将字符串中每个单词的第一个字母大写的最佳方法是什么?

sql sql-server string

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

在System.Web.Routing中模拟用于MVC应用程序的RouteData类

我正在尝试测试一些依赖于ControllerContext.RouteData中的Values属性的应用程序逻辑.

到目前为止我有

// Arrange
var httpContextMock = new Mock<HttpContextBase>(MockBehavior.Loose);
var controllerMock = new Mock<ControllerBase>(MockBehavior.Loose);
var routeDataMock = new Mock<RouteData>();

var wantedRouteValues = new Dictionary<string, string>();
wantedRouteValues.Add("key1", "value1");
var routeValues = new RouteValueDictionary(wantedRouteValues);

routeDataMock.SetupGet(r => r.Values).Returns(routeValues);  <=== Fails here

var controllerContext = new ControllerContext(httpContextMock.Object, routeDataMock.Object, controllerMock.Object);
Run Code Online (Sandbox Code Playgroud)

单元测试失败:System.ArgumentException:不可覆盖的成员上的设置无效:r => r.Values

由于构造函数是RouteData(RouteBase,IRouteHandler),因此创建伪RouteData也不起作用.

这里重要的类是抽象类RouteBase,它有GetRouteData(HttpContextBase)方法,它返回一个RouteData实例,我试图伪造的类.把我带到圈子里!

对此的任何帮助都是最受欢迎的.

c# asp.net-mvc moq

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

如何在Knockout JS更新DOM之后运行代码

作为我观点的一部分,我有:

<ul data-bind="foreach: caseStudies">
    <li><a data-bind="text: title, attr: { href: caseStudyUrl }"></a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想在淘汰更新DOM后运行一些第三方代码.

caseStudies(data);
thirdPartyFuncToDoStuffToCaseStudyLinks(); <-- DOM not updated at this point.
Run Code Online (Sandbox Code Playgroud)

关于我如何能够在正确的时间进入淘汰赛的想法?

javascript knockout.js

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

C#中的SmallDateTime最小值和最大值

在C#中有一个SqlDateTime.MinValueSqlDateTime.MaxValue,但我找不到一个SmallDateTime来自SQL Server 的数据类型.

var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);
Run Code Online (Sandbox Code Playgroud)

是否有一个或我需要自己实现这个?

c# sql

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

如何使用DataContract添加XML属性

我有一个简单的类我正在序列化.

 [DataContract(Name = "Test", Namespace = "")]
 public class Test
 {
    [DataMember(Order = 0, Name = "Text")]
    public string Text { get; set; }

    public Test() {}
 }
Run Code Online (Sandbox Code Playgroud)

这将启动以下XML:

<Test>
   <Text>Text here</Text>
</Test>
Run Code Online (Sandbox Code Playgroud)

我想要的是:

<Test>
   <Text type="MyType">Text here</Text>
</Test>
Run Code Online (Sandbox Code Playgroud)

如何添加XML元素的属性?

提前致谢.

.net c# serialization datacontract

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

为visual studio创建多项目模板时,有没有办法在根模板文件中使用参数?

我正在尝试创建一个多项目模板.我希望子项目名称包含解决方案名称.我尝试了以下但是$ safeprojectName $由于某种原因在根模板中不起作用.它尝试使用名称中的$ safeprojectName $创建文件夹,而不是实际的项目名称.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
  xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>Default Solution</Name>
    <Description>An example of a multi-project template</Description>
    <Icon>Icon.ico</Icon>
    <ProjectType>CSharp</ProjectType>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <SolutionFolder Name="$safeprojectName$.Web">
        <ProjectTemplateLink ProjectName="$safeprojectName$.Web">
          Src\Web\MyTemplate.vstemplate
        </ProjectTemplateLink>
      </SolutionFolder>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)

我已经对此做了大量的阅读,并且已经使用IWizard接口创建了一个程序集,该接口创建了一个参数$ solutionName $.然后我使用了以下模板.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
  xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>Default Solution</Name>
    <Description>An example of a multi-project template</Description>
    <Icon>Icon.ico</Icon>
    <ProjectType>CSharp</ProjectType>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <SolutionFolder Name="$solutionName$.Web">
        <ProjectTemplateLink ProjectName="$solutionName$.Web">
          Src\Web\MyTemplate.vstemplate
        </ProjectTemplateLink>
      </SolutionFolder>
    </ProjectCollection>
  </TemplateContent>
  <WizardExtension>
    <Assembly>DefaultSoloutionWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=f753ddb61a28cb36, processorArchitecture=MSIL</Assembly>
    <FullClassName>DefaultSoloutionWizard.WizardImplementation</FullClassName>
  </WizardExtension>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)

然而,这也会因同样的问题而失败.我是不是想做不可能的事?对此的任何帮助都是最受欢迎的.

templates visual-studio

14
推荐指数
2
解决办法
5349
查看次数

使用LINQ Average()方法处理null结果

我是LINQ的新手,我正在尝试从表格到图表创建一些数据点.此表中的三个重要字段是id,时间和值.我正在编写一个查询来获取所选id的设定时间内的平均值.我写的LINQ如下:

var value = (from t in _table
             where t.Id == id
                 && t.Time >= intervalStartTime
                 && t.Time <= intervalEndTime
             select t.Value).Average();
Run Code Online (Sandbox Code Playgroud)

但是,这会在运行时崩溃:

"无法将null值分配给类型为System.Decimal的成员,这是一个不可为空的值类型.."

在某些时间间隔没有数据,所以SQL LINQ生成返回null,我希望COALESCED为0但反而崩溃了应用程序.有没有办法编写这个LINQ查询,以便能够正确处理这个问题?

表定义使事情更清晰:

[Serializable]
[Table(Name = "ExampleTable")]
public class ExampleTable
{
    [Column(Name = "Id")]
    public int Id { get; set; }

    [Column(Name = "Time")]
    public DateTime Time { get; set; }

    [Column(Name = "Value")]
    public int Value{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq

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