小编Rob*_*ous的帖子

在MVC4 EF CodeFirst中创建关系时,为什么我们需要同时包含Object和ObjectId?

例如,在将卡片与套件相关联时,我有:

public class Card
{

    public virtual int CardId { get; set; }

    // belongs to a Set
    public virtual int SetId { get; set; }
    public virtual Set Set { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

为什么我需要Set和SetId?

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

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

在MVC项目中从控制器访问服务层

我以前有一个控制器,其代码如下:

public ActionResult Method(int Id)
        {
            var foo = doThis(Id)
            return View("Error");
        }
Run Code Online (Sandbox Code Playgroud)

doThis() 是控制器中存在的一个方法,并执行一些逻辑。我现在尝试将所有业务逻辑重新定位到包含一堆类的服务项目。

首先,我添加了一个类库 Project.Services,然后添加了一个类 FooServices,其中包含以下内容:

namespace Project.Services
{
    class FooServices
    {
        public List<Bar> doThis(int Id)
        {
            //Do stuff
            return parentSets;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经从我的 MVC 项目添加了对此项目的引用,并从该服务项目添加了对我的数据模型项目的引用,但我不确定现在如何继续。如何从控制器访问这些方法?

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

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

将Azure存储用于媒体文件

我正处于将使用Azure网站托管的项目的早期阶段.开发此项目的团队最熟悉Azure SQL和Blob存储.该产品将托管大量的mp3和wma音频文件,这些文件将根据要求提供给客户端应用程序.这是使用WebAPI构建的.

最终用户将上传音频文件.我想知道它们是应该存储在blob存储中,还是存储在Azure SQL表中作为某种字节流,或者是我不知道的其他选项.

以与Azure网站一起使用的方式存储大量音频文件的推荐方法是什么?我正在使用Entity Framework Code-First以防万一.

c# asp.net-mvc entity-framework azure azure-sql-database

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

Knockout + MVC - 您不能多次将绑定应用于同一元素

我的MVC视图:

@model MG.ViewModels.Profile.ProfileDetailsViewModel
<div>
<h4>About Me</h4>
<!-- ko if: !isEditingAboutMe() -->
<p data-bind="text: aboutMe()">@Model.AboutMe</p>
@if (Model.CurrentUserCanEdit)
{
    <a data-bind="click: editAboutMe">edit</a>
}
<!-- /ko -->
<!-- ko if: isEditingAboutMe() -->
@Html.TextBoxFor(model => model.AboutMe, new { data_bind = "value: aboutMe" })
<a data-bind="click: saveAboutMe">save</a>
<a data-bind="click: cancelAboutMe">cancel</a>
<!-- /ko -->
</div>

<script type="text/javascript">ko.applyBindings(@Html.Raw(Json.Encode(Model)));</script>
Run Code Online (Sandbox Code Playgroud)

我的ProfileVm Javascript:

function ProfileVm() {
var self = this;

self.saveAboutMe = function() {
    self.isEditingAboutMe(false);
};

self.cancelAboutMe = function() {
    self.isEditingAboutMe(false);
};

self.isEditingAboutMe = ko.observable(false);
self.editAboutMe = function() {
    self.isEditingAboutMe(true); …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc knockout.js

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

WebAPI HttpContext 缓存 - 有可能吗?

我在常规 MVC 控制器中执行了以下操作:

public ActionResult GetCourses()
{
  List<Course> courses = new List<Course>();

  if (this.HttpContext.Cache["courses"] == null)
  {
    courses = _db.Courses.ToList();
    this.HttpContext.Cache["courses"] = courses;
  }
  else
  {
    courses = (List<Course>)this.HttpContext.Cache["courses"];
  }

  return PartialView("_Courses", courses);
}
Run Code Online (Sandbox Code Playgroud)

我缓存的原因是因为课程在两个位置加载 - 用于选择课程的模式和列出所有课程的索引视图。该模式仅需要 JSON 来渲染(从 WebAPI 中提取数据),而索引视图是 Razor 生成的视图(通过 MVC 控制器提取)。

如果我已经有了课程数据,我会尝试不再查询数据库。

上面的代码适用于索引视图。现在,对于模态,我只需要发送 JSON,但前提是课程尚未加载到索引视图中。

我尝试从 API 控制器访问 HttpContext,但似乎无法以相同的方式访问它。 如何从 WebAPI 控制器检查 HttpContext.Cache,并在需要时填充它,以便 MVC 控制器可以检查其内容?

asp.net-mvc caching asp.net-mvc-4 asp.net-web-api

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

从Javascript更新Razor模型

这是情况:我有一个Razor生成的项目列表(需要保留Razor生成):

@model MG.ViewModels.Profile.ProfileDetailsViewModel
foreach (var interest in Model.Interests)
    {
        <span class="subject-title">@interest.SubjectName</span>
        <a data-bind='click: function(){viewDescription(@Html.Raw(Json.Encode(interest)))}'class="subject-description-button" href="#" title="View Details">details</a> 
    }
Run Code Online (Sandbox Code Playgroud)

用户可以通过单击编码viewDescriptionjavascript函数模型的"详细信息"链接来更新每个项目的详细信息:

    self.viewDescription = function (data) {
       // pull data into KO observables
       self.selectedInterestDescription(data.Description);
       self.selectedInterestSubject(data.SubjectName);
       self.selectedInterestId(data.InterestId);
       self.triggerModal(true);
    };
Run Code Online (Sandbox Code Playgroud)

在触发的模式中,用户可以向更新描述的端点发送AJAX请求.这很有用,正如我所料.

我正在努力的是 - 当用户完成更新时,剃刀Model仍然具有旧数据.因此,当用户在更新后从Razor生成的列表中单击"详细信息"时,旧@model数据将被编码. 如何将更新的数据推送到@Modeljavascript?

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 knockout.js

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

从淘汰赛foreach循环中访问先前索引的项目?

我有一个列出消息的聊天应用程序 - 如果当前消息和之前的消息是由同一个用户发布的,我不希望在当前消息上显示用户名.

为了开始这个,我试图导航出来foreach以通过相对索引访问数组.看起来我甚至无法通过直接索引访问项目,但:

<ul data-bind="foreach:array1">
    <li data-bind="text:$parent.array1()[0]">Should be John, works</li>
    <li data-bind="text:$parent.array1()[$index]">Should be the same as $data, but throws error</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

最后,我想做以下事情:

<ul data-bind="foreach:array1">
    <li data-bind="text:$parent.array1()[$index - 1]">Happens after index 0 only</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

小提琴演示第一期:http: //jsfiddle.net/xveEP/148/

怎么能实现这一目标?

knockout.js

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

撤销TFS合并信用

我理解当从BRANCHA> BRANCHB执行合并并在某些文件上选择"Keep Target"时,将导致在TFS历史记录中为这些文件授予"合并信用":将开发分支合并到Main:没有合并的更改

有没有办法让我们撤消/擦除给定文件上的Merge Credits,有效地使我们的开发人员能够通过Source Control Explorer执行/强制合并?

语境:

每周,我们从BRANCHA> BRANCHB合并以同步并行工作.记录具有未解决冲突的任何文件,并通知其所有者对A> B中的这些文件执行合并.然后,我们在这些文件上选择"保留目标" - 预期文件所有者将来合并以解决挂起的冲突.我们将工作委托给个人所有者.

这不太合适,因为TFS将看到初始合并已"解决"冲突(基于其对先前合并历史记录的评估,而不是文件内容).

我想让开发人员对这些文件执行重新合并,而不强制他们使用命令提示符和/ force开关.

继续前进,我的计划是在检查分支>分支合并之前对那些被选为"保留目标"的挂起更改进行"撤消更改".这将使开发人员能够通过避开合并信用额来独立执行合并.

但回头看,分支<>分支/强制合并会导致数百个冲突,我们希望将这些冲突委托给所有者作为同步两个分支的方法.执行经典合并没有报告任何内容,因为先前的合并具有"保持目标".

tfs visual-studio tfs2010 tfs2012 tfs2013

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

一对一可选关系,两端可选,两个FK

我正在关注这个问题:EF Code First - 1对1可选关系

我的关系设置如下:

public class Review {
    [Key]
    public int ReviewId { get; set; }

    public virtual Payment Payment { get; set; }
}

public class Payment {
    [Key]
    public int PaymentId { get; set; }

    [ForeignKey("Review")]
    public int? ReviewId { get; set; }
    public virtual Review Review { get; set; }
}

    public class ReviewConfiguration : EntityTypeConfiguration<Review>
{
    public ReviewConfiguration()
    {
        // One-to-One Optional
        HasOptional<Payment>(s => s.Payment).WithOptionalDependent(s => s.Review).Map(s => s.MapKey("PaymentId"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个有效的密钥,但另一个从未映射为可选的FK:

在此输入图像描述

我究竟做错了什么? …

.net entity-framework ef-code-first entity-framework-6

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

WebAPI验证装饰 - [DataMember]和[Required]之间的区别?

我有以下内容:

[DataContract]
public class Video
{
    [Key]
    [DataMember(IsRequired = false)]
    [Required]
    public int VideoId { get; set; }

    [DataMember(IsRequired = false)]
    [Required]
    public int UserId { get; set; }

    [Required]
    [DataMember(IsRequired=true)]
    public string Title { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

这里的目标是通过DataMember装饰告诉WebAPI,我需要的所有内容都是标题 - 有效请求不需要其他两个属性.

然后我试图告诉Entity Framework/SQL数据库中需要其他属性.我将在我的服务或webapi层中分配它们.

如果我使用以下内容仅发送标题,我会得到

{"$ id":"1","message":"请求无效.","modelState":{"$ id":"2","video.VideoId":["需要值". ],"video.UserId":["UserId属性是必需的."]}}

我在这里误解了什么?据我所知,WebAPI不应该关心没有提供videoId.

entity-framework asp.net-web-api

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