小编Che*_*hev的帖子

如何在MVC 3中获取当前页面URL

我在我正在建立的博客上使用Facebook评论插件.它有一些FBXML标记,由页面上引用的facebook javascript解释.

这一切都很好,但我必须将当前的,完全限定的URL传递给插件.

<div style="width: 900px; margin: auto;">
    <div id="fb-root"></div>
    <fb:comments href="URL HERE" num_posts="10" width="900"></fb:comments>
</div>
Run Code Online (Sandbox Code Playgroud)

获取当前页面的URL的最佳方法是什么?请求URL.

这是我的解决方案的最终代码:

<fb:comments href="@Request.Url.AbsoluteUri" num_posts="15" width="900"></fb:comments>
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc razor

354
推荐指数
6
解决办法
39万
查看次数

MVC 3:当通过ajax加载时,如何在没有布局页面的情况下呈现视图?

我正在学习渐进式增强功能,我对AJAXifying视图有疑问.在我的MVC 3项目中,我有一个布局页面,一个viewstart页面和两个普通视图.

viewstart页面位于Views文件夹的根目录中,因此适用于所有视图.它指定所有视图都应该_Layout.cshtml用于其布局页面.布局页面包含两个导航链接,每个视图一个.链接用于@Html.ActionLink()将自己呈现给页面.

现在我添加了jQuery并希望劫持这些链接并使用Ajax动态加载页面上的内容.

<script type="text/javascript">
    $(function () {
        $('#theLink').click(function () {
            $.ajax({
                url: $(this).attr('href'),
                type: "GET",
                success: function (response) {
                    $('#mainContent').html(response);
                }
            });
            return false;
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

我可以通过两种方式来做到这一点,但我并不特别喜欢这两种方式:

1)我可以获取整个View的内容并将它们放在局部视图中,然后让主视图在渲染时调用局部视图.这样,Request.IsAjaxRequest()在控制器中使用,我可以根据请求是否是Ajax请求返回View()或返回PartialView().我无法将常规视图返回到Ajax请求,因为它将使用布局页面,我将获得注入的布局页面的第二个副本.但是,我不喜欢这个,因为它迫使我创建空视图,其中只有一个@{Html.RenderPartial();}用于标准GET请求.

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return PartialView("partialView");
        else
            return View();
    }
Run Code Online (Sandbox Code Playgroud)

然后在Index.cshtml中执行以下操作:

@{Html.RenderPartial("partialView");}
Run Code Online (Sandbox Code Playgroud)

2)我可以从_viewstart中删除布局指定,并在请求不是Ajax时手动指定它:

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return View(); // Return view with no master.
        else
            return View("Index", "_Layout"); // Return …
Run Code Online (Sandbox Code Playgroud)

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

152
推荐指数
5
解决办法
15万
查看次数

检查空值的正确方法是什么?

我喜欢null-coalescing运算符,因为它可以很容易地为可空类型分配默认值.

 int y = x ?? -1;
Run Code Online (Sandbox Code Playgroud)

这很好,除非我需要做一些简单的事情x.例如,如果我想检查Session,那么我通常最终不得不写更详细的东西.

我希望我能做到这一点:

string y = Session["key"].ToString() ?? "none";
Run Code Online (Sandbox Code Playgroud)

但是你不能因为在.ToString()null检查之前调用了gets,所以如果Session["key"]为null 则它会失败.我最终这样做了:

string y = Session["key"] == null ? "none" : Session["key"].ToString();
Run Code Online (Sandbox Code Playgroud)

在我看来,它比三线替代方案更有效,也更好:

string y = "none";
if (Session["key"] != null)
    y = Session["key"].ToString();
Run Code Online (Sandbox Code Playgroud)

尽管有效,但如果有更好的方法,我仍然很好奇.似乎无论我总是要引用Session["key"]两次; 一次检查,再次检查.有任何想法吗?

.net c# session null null-coalescing-operator

122
推荐指数
7
解决办法
8728
查看次数

nodeJs回调简单的例子

任何人都可以给我一个nodeJs回调的简单例子,我已经在很多网站上搜索过相同但不能正确理解它,请给我一个简单的例子.

getDbFiles(store, function(files){
    getCdnFiles(store, function(files){
    })
})
Run Code Online (Sandbox Code Playgroud)

我想做那样的事......

javascript asynchronous callback asynccallback node.js

113
推荐指数
4
解决办法
22万
查看次数

实体框架迁移重命名表和列

我重命名了几个实体及其导航属性,并在EF 5中生成了一个新的迁移.通常在EF迁移中重命名,默认情况下它会删除对象并重新创建它们.这不是我想要的,所以我几乎不得不从头开始构建迁移文件.

    public override void Up()
    {
        DropForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports");
        DropForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups");
        DropForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections");
        DropIndex("dbo.ReportSectionGroups", new[] { "Report_Id" });
        DropIndex("dbo.ReportSections", new[] { "Group_Id" });
        DropIndex("dbo.Editables", new[] { "Section_Id" });

        RenameTable("dbo.ReportSections", "dbo.ReportPages");
        RenameTable("dbo.ReportSectionGroups", "dbo.ReportSections");
        RenameColumn("dbo.ReportPages", "Group_Id", "Section_Id");

        AddForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports", "Id");
        AddForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections", "Id");
        AddForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages", "Id");
        CreateIndex("dbo.ReportSections", "Report_Id");
        CreateIndex("dbo.ReportPages", "Section_Id");
        CreateIndex("dbo.Editables", "Page_Id");
    }

    public override void Down()
    {
        DropIndex("dbo.Editables", "Page_Id");
        DropIndex("dbo.ReportPages", "Section_Id");
        DropIndex("dbo.ReportSections", "Report_Id");
        DropForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages");
        DropForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections");
        DropForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports");

        RenameColumn("dbo.ReportPages", "Section_Id", "Group_Id"); …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework ef-migrations entity-framework-5

101
推荐指数
4
解决办法
8万
查看次数

如何使用ASP.NET MVC 3和Stackoverflow的Markdown

我现在已经研究了几个小时,但却找不到任何真正的资料来源.我正在ASP.NET MVC 3中构建一个站点,并希望利用StackOverflow使用的Markdown编辑器.有没有人有一个很好的教程?

你在哪里下载最新的降价?用什么语言写的?我将从哪里开始将其集成到MVC 3项目中?即使经过我所做的所有搜索和阅读,我仍然很困惑.

我遇到过一个网站.http://daringfireball.net/projects/markdown/但这看起来非常古老,似乎我必须学习一些关于CGI和PERL的东西,我绝对没有经验.一个javascript/jQuery版本将是出色的.任何想法,链接,参考都非常感谢.

UPDATE

我注意到这个问题得到了相当多的观点,所以我决定用一些有用的参考资料来更新它.我设法让一个Markdown编辑器在CodeTunnel.com上很好地工作,我写了一些关于它的博客.希望他们帮助任何遇到这个问题的人.

c# asp.net-mvc markdown jquery asp.net-mvc-3

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

查询的结果不能多​​次枚举

我正在使用实体框架(ef)并收到以下错误:

"查询的结果不能多​​次枚举."

我有一个包含ef数据上下文的存储库类.然后我有一个控制器类(不要与MVC控制器混淆),它包含一个存储库实例.到目前为止一直这么好......我在控制器上有一个搜索方法,它应该返回一个数组RadComboBoxItemData,用于填充Telerik RadComboBox控件.

public RadComboBoxItemData[] Search(int id, string searchText)
{
    var query = context.Search(id, searchText);
    List<RadComboBoxItemData> result = new List<RadComboBoxItemData>();
    foreach (var item in query)
    {
        RadComboBoxItemData itemData = new RadComboBoxItemData();
        itemData.Text = ""; // assign some text here..;
        itemData.Value = ""; /*assign some value here..*/
        result.Add(itemData);
    }

    return result.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

当我调试我的代码时,我可以进入foreach循环,但后来我得到一个错误说:

System.Data.Entity.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:查询结果不能多​​次枚举.

我的实体使用现有存储过程的函数导入.

// EF repository method calling the function imported method on the data context.
public IEnumerable<SearchItem> Search(int id, string searchText)
{
    return this.entityContext.Search(id, …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net entity-framework entity-framework-4

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

为sql查询设置默认架构

有没有办法为查询设置模式,以便在查询的其余部分中,我可以仅通过名称引用表而不用模式名称添加它们?

例如,我想做这样的事情:

Use [schemaName]
select * from [tableName]
Run Code Online (Sandbox Code Playgroud)

与此相反:

select * from [schemaName].[tableName]
Run Code Online (Sandbox Code Playgroud)

sql sql-server schema

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

Visual Studio在编辑时不跟踪更改或从源代码管理中签出文件

我是TFS的新手.在我的工作中,我将TFS项目映射到本地目录,执行get,一切都按预期工作.当我在本地副本上编辑文件时,源代码控制会自动将它们检出以进行编辑,并通过挂起的更改窗口跟踪具有挂起更改的文件.然后我只是使用那个窗口全天检查它们.

但是,在家里似乎并没有发生这种情况.我可以访问源代码控制并使用源代码管理资源管理器,已将项目映射到本地目录.这似乎工作正常.但是,当我打开项目并打开文件时,我所做的更改不会自动检出文件.实际上,在我尝试保存更改之前,visual studio甚至没有更改其只读状态; 此时它警告我该文件是只读的,并询问我是否希望它尝试覆盖权限并保存.我做,它工作正常.但同样,在挂起的更改窗口中没有更改注册.我有点迷茫.我真正拥有的唯一源代码控制体验是subversion和visual studio AnkhSVN插件.

有任何想法吗?我甚至通过双击源代码管理器中的解决方案文件来打开我的解决方案.你会认为它完全意识到我打开的解决方案应该由源代码控制来跟踪.

任何帮助深表感谢.

编辑由于人们似乎对我说"在家"的事实感到不满,让我澄清一下.网络没有问题.我在VPN上.我可以浏览源代码控制就好了.我已经因各种原因重新安装了所有东西.一切顺利.我只是遇到Visual Studio没有跟踪文件更改并允许它们提交回源代码控制的问题.总结一下:

在正确映射后,Visual Studio如何停止跟踪更改,并允许我获取最新信息?我可以从源代码控制更新,我只是无法提交.即使在进行更改后,待处理更改窗口也为空.

请,只有那些使用过TFS的人才能对这种行为有所了解.如果你不知道我在说什么,那就别担心.我一直非常清楚,任何使用TFS进行源代码控制的人都会理解这个问题.

version-control tfs visual-studio-2010 visual-studio

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

如何在textarea中获得光标位置?

我有一个textarea,我想知道如果我在textarea的最后一行或textarea的第一行用我的光标用JavaScript.

我想到抓住第一个换行符和最后一个换行符的位置,然后抓住光标的位置.

var firstNewline = $('#myTextarea').val().indexOf('\n');
var lastNewline = $('#myTextarea').val().lastIndexOf('\n');

var cursorPosition = ?????;

if (cursorPosition < firstNewline)
    // I am on first line.
else if (cursorPosition > lastNewline)
    // I am on last line.
Run Code Online (Sandbox Code Playgroud)
  • 是否可以抓住textarea中的光标位置?
  • 您是否有更好的建议,以了解我是否在textarea的第一行或最后一行?

除非JavaScript简单或简单,否则首选jQuery解决方案.

html javascript jquery textarea input

61
推荐指数
4
解决办法
11万
查看次数