我一直在谷歌搜索/ SO:这个问题有一段时间了,很多人似乎都在分享这个问题,但我没有找到任何成功的解决方案来解决我的问题.
使用MVC3和Razor.
母版页包含:
<script src="@Url.Content("~/Scripts/jquery-1.5.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
AjaxTest.cshtml包含:
<div id="AjaxTestDiv">content</div>
@Ajax.ActionLink("Update", "AjaxTester", new AjaxOptions { UpdateTargetId = "AjaxTestDiv" })
AjaxTester操作方法:
public string AjaxTester()
{
if (Request.IsAjaxRequest())
{
return DateTime.Now.ToString();
}
else
{
return "FAIL";
}
}
Run Code Online (Sandbox Code Playgroud)我总是将"失败"返回到空白页面,而不是目标div.
编辑:还要注意,如果我删除if(Request.IsAjaxRequest()),我仍然不会返回任何目标div,而是一个空白页面.
Edit2:看看生成的HTML,这是我的链接:
<a data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace"
data-ajax-update="#AjaxTestDiv" href="/Area/AjaxTester">Update</a>
Run Code Online (Sandbox Code Playgroud)
尝试过将方法切换到GET,但无济于事.
过夜(内部,幸运)MVC Web应用程序已停止为我工作,据我所知没有任何改变.在过去的两天里,应用程序本身并没有被修改过,IIS也是如此.
问题是我得到了我的www文件夹的目录列表而不是应用程序默认动作(/Home/Index
).
我的www文件夹包含标准内容:
bin
Content
Scripts
Views
Global.asax
Web.config
Run Code Online (Sandbox Code Playgroud)
我试过了:
现在,这发生过一次.在我度假的时候,通过重新启动整个万维网发布服务解决了这个问题.虽然这次也可能有用,但我想在暂时解决问题之前找出问题的根源,以便让它在未来再次发生.因此,虽然WWW Publishing Service重新启动可能会使站点再次运行,但我宁愿在解决这个问题之前先了解它为什么会发生这种情况.
最后,请注意我在同一个IIS服务器上运行其他MVC应用程序,并且从未遇到过这个问题.
C#中是否已经有一个可以执行"条件性压缩"的功能?
即
是否有一个函数允许不同的长度输入并采用一个谓词来确定何时递增较小的源枚举器,以便可以看到较大源中的所有元素?
作为一个人为的例子,假设我们有一个可枚举的素数和一个可枚举的整数(都是按升序排序).我们希望生成一个新的枚举,它包含自上一个素数以来的素数和所有整数.
{2, 3, 5, 7, 11}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10,}
{2, [1]}, {3,[]}, {5, [4]}, {7, [6]}, {11, [8,9,10]}
Run Code Online (Sandbox Code Playgroud) 我目前正试图用RX .NET来解决并发问题,并对某些事情感到困惑.我想并行运行四个相对较慢的任务,所以我认为NewThreadScheduler.Default
这是要走的路,因为它"代表一个在一个单独的线程上调度每个工作单元的对象"..
这是我的设置代码:
static void Test()
{
Console.WriteLine("Starting. Thread {0}", Thread.CurrentThread.ManagedThreadId);
var query = Enumerable.Range(1, 4);
var obsQuery = query.ToObservable(NewThreadScheduler.Default);
obsQuery.Subscribe(DoWork, Done);
Console.WriteLine("Last line. Thread {0}", Thread.CurrentThread.ManagedThreadId);
}
static void DoWork(int i)
{
Thread.Sleep(500);
Console.WriteLine("{0} Thread {1}", i, Thread.CurrentThread.ManagedThreadId);
}
static void Done()
{
Console.WriteLine("Done. Thread {0}", Thread.CurrentThread.ManagedThreadId);
}
Run Code Online (Sandbox Code Playgroud)
我假设"X线程Y"每次都会输出不同的线程ID,但实际输出是:
Starting. Thread 1
Last line. Thread 1
1 Thread 3
2 Thread 3
3 Thread 3
4 Thread 3
Done. Thread 3
Run Code Online (Sandbox Code Playgroud)
所有工作都按顺序在同一个新线程上进行,这不是我所期待的.
我假设我错过了什么,但我无法弄清楚是什么.
更新可能这篇文章对使用RichTextBoxes的编码员有帮助.匹配对于普通字符串是正确的,我没有看到这个并且我没有看到"ä"在richTextBox.Rtf中转换为"\ e4r"!所以Match.Value是正确的 - 人为错误.
RegEx找到正确的文本,但Match.Value错误,因为它用"\'e4"替换德语"ä"!
让example_text =" Primär-ABC "并让我们使用以下代码
String example_text = "<em>Primär-ABC</em>";
Regex em = new Regex(@"<em>[^<]*</em>" );
Match emMatch = em.Match(example_text); //Works!
Match emMatch = em.Match(richtextBox.RTF); //Fails!
while (emMatch.Success)
{
string matchValue = emMatch.Value;
Foo(matchValue) ...
}
Run Code Online (Sandbox Code Playgroud)
然后emMatch.Value返回" Prim \'e4r-ABC "而不是" Primär-ABC ".
德国ä转变为'e4!因为我想使用确切的字符串,我需要emMatch.Value作为Primär-ABC - 我该如何实现?
我有这个问题,我正在使用StringReader从文本框中查找特定的单词,到目前为止工作得很好,但是我需要找到一种方法来检查每一行中对应字符串数组的特定单词.
以下代码有效:
string txt = txtInput.Text;
string user1 = "adam";
int users = 0;
int systems = 0;
using (StringReader reader = new StringReader(txt))
{
while ((txt = reader.ReadLine()) != null)
{
if (txt.Contains(user1))
{
users++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我创建了一个String Array来存储多个字符串,但Contains方法似乎只接受一个字符串.
string[] systemsarray = new string[] { "as400", "x500", "mainframe" };
if(txt.Contains(systemsarray))
{
systems++;
}
// error message: cannot convert from string[] to string
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何做到这一点,或改善它的方法?
提前致谢.
我几乎觉得这很愚蠢,但是......那里有没有好的样本.po文件?我一直在阅读GNU gettext手册,虽然它指定了一般结构,但它并没有像我希望的那样详细.另外,我真的想利用其更先进功能的实际充实.po文件(如msgctxt
,#| msgctxt
等),这样我就可以对其运行测试.
关于在哪里找到这样的东西的任何提示?
我有一个问题,我确信它很简单,但它在我的代码中不起作用.我正在创建一个日志文件,我想将日期连接到文件名,以便他们知道何时生成日志.我的string.replace没有从我已转换为字符串的日期中删除"\".
见下面的代码:
string DateNow = Convert.ToString(System.DateTime.Now);
DateNow = DateNow.Substring(0, 10);
DateNow.Replace(@"\\", "-");
string FileName = "log" + DateNow + ".txt";
// Write values to textfile and save to Log folder
using (StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath("~/Log" + FileName)))
{
sw.WriteLine(System.DateTime.Now);
sw.WriteLine("New user created");
sw.WriteLine("Username is: " + username);
sw.WriteLine("Password is: " + password);
sw.WriteLine("Company is: " + company);
sw.WriteLine("Email is: " + email);
sw.Dispose();
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
这将引发异常,因为Windows中的文件名不能包含\ character.任何想法为什么替换方法不起作用?
谢谢.
c# ×5
asp.net ×2
asp.net-mvc ×2
ajax ×1
arrays ×1
concurrency ×1
encoding ×1
gettext ×1
ienumerable ×1
iis ×1
linq ×1
po ×1
regex ×1
replace ×1
rtf ×1
stringreader ×1