我正在尝试为我的一个控制器编写一个单元测试来验证视图是否正确返回,但是这个控制器有一个访问HttpContext.Current.Session的基本控制器.每次我创建一个我的控制器的新实例都会调用basecontroller构造函数,并且测试失败并在HttpContext.Current.Session上出现空指针异常.这是代码:
public class BaseController : Controller
{
protected BaseController()
{
ViewData["UserID"] = HttpContext.Current.Session["UserID"];
}
}
public class IndexController : BaseController
{
public ActionResult Index()
{
return View("Index.aspx");
}
}
[TestMethod]
public void Retrieve_IndexTest()
{
// Arrange
const string expectedViewName = "Index";
IndexController controller = new IndexController();
// Act
var result = controller.Index() as ViewResult;
// Assert
Assert.IsNotNull(result, "Should have returned a ViewResult");
Assert.AreEqual(expectedViewName, result.ViewName, "View name should have been {0}", expectedViewName);
}
Run Code Online (Sandbox Code Playgroud)
关于如何模拟(使用Moq)在基本控制器中访问的Session的任何想法,以便后代控制器中的测试将运行?
我知道很多人都非常喜欢ASP.NET MVC 2在第一版中所做的改进.我刚刚开始迁移我们的MVC 1项目,到目前为止,已经完全清理了我们在大规模应用程序中的子文件夹混乱.当我深入了解所有改进和变化时,我仍然一直在想,如果他们在这个版本中有x,那将会很好.例如,如果他们内置了某种依赖注入而不必使用第三方解决方案,我会喜欢它.
我真正的问题是,现在ASP.NET MVC 2已经出现了,希望/希望团队实现了哪些功能,并希望它们能够实现ASP.NET MVC 3?
编辑
看起来像ASP.NET MVC 3的第一个预览版内置了依赖注入!我喜欢到目前为止添加的功能.ASP.NET 3预览一个就出来了!
我有一个Excel 2007电子表格,我用OpenXML SDK 2编辑.我删除了一些行等.我想知道如何将Spreadsheetdocument保存到另一个文件名.
我正在尝试编写一些代码来生成Excel电子表格,我不确定CellValues.InlineString和CellValues.String在单元格上插入文本有什么区别.
我要用这个:
private void UpdateCellTextValue(Cell cell,string cellValue)
{
InlineString inlineString = new InlineString();
Text cellValueText = new Text { Text = cellValue };
inlineString.AppendChild(cellValueText);
cell.DataType = CellValues.InlineString;
cell.AppendChild(inlineString);
}
Run Code Online (Sandbox Code Playgroud)
这个
private void UpdateCellTextValue(Cell cell, string cellValue)
{
cell.CellValue = new CellValue(cellValue);
cell.DataType = new EnumValue<CellValues>(CellValues.String);
}
Run Code Online (Sandbox Code Playgroud)
或者只是这个(InsertSharedStringItem返回新插入的共享字符串项的Id)
private void SetCellSharedTextValue(Cell cell,string cellValue)
{
int stringId = InsertSharedStringItem(cellValue);
cell.CellValue = new CellValue(stringId.ToString());
cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
}
Run Code Online (Sandbox Code Playgroud) 我有一个Excel 2010电子表格,其中包含3个名为Sheet1,Sheet2和Sheet3的工作表.
我正在尝试按名称获取对工作表的引用.
我正在使用代码:
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(FileName, true))
{
//Access the main Workbook part, which contains all references
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.Last();
// this gives me Sheet1
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
}
Run Code Online (Sandbox Code Playgroud)
我试图获得Sheet2的引用,但我找不到这样做的方法.
我越走越近了,但我还没到那里:
var x = workbookPart.Workbook.Sheets.Where(s=> s.GetAttribute("name", "").Value == "Sheet2").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
这让我得到了工作表的参考,但没有给工作表上的数据
谢谢
我一直在谷歌上搜索并在网站上搜索答案,但我找不到解决方案 - 各地人们大多讨论如何在文档中添加新的数字格式并应用它.
我需要的是将单元格值作为带有应用格式的字符串 - 即与Excel显示的字符串相同.
我已经认为没有简单的方法或内置函数可以返回单元格的现成格式化值.
所以在我看来,要获得我需要做两件事的价值:1.获取格式字符串.2.使用此字符串格式化单元格值.
但是这两个步骤都有问题.
可以轻松获取包含NumberFormatId的CellFormat实例:
CellFormat cellFormat = (CellFormat) document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ElementAt(cell.StyleIndex);
Run Code Online (Sandbox Code Playgroud)
但是,如果id对应于标准预定义格式之一,如何使用此NumberFormatId获取格式字符串?(即低于160)它们不在电子表格文档中,我无法相信它们应该在应用程序中进行硬编码.
此外,一旦获得格式字符串,如何将其应用于单元格值?到目前为止我理解,代码应该检查单元格值的类型,如果是数字 - 使用格式字符串将其转换为字符串.
我发现这个页面提到了使用Microsoft.Office.Excel.Interop,但我更愿意继续使用OpenXML SDK.
总的来说,我很惊讶在Web上找到这个问题的确切答案是如此困难,因为我认为这将是许多开发人员在日常工作中需要的东西.
如果MOQ没有继承像这样的接口的类是合法的:
var mockIActionService = new Mock<IActionService>();
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object);
Run Code Online (Sandbox Code Playgroud)
我将IService注入ValidAgeRule,这只是一个简单的类,有一个名为"Excute"的方法.我的问题是如何验证已被调用.每当我尝试:
mockValidAgeRule.Verify(x => x.Execute(app)); //Where App is a valid object
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
标题说明了我得到的错误.我试图使用OpenXml 隐藏 word doc中的所有文本.目前,当我尝试追加段落属性时,我收到上述错误.我在网上找不到这个错误.
返回错误的代码
using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(mDoc_copy, true))
{
// Manage namespaces to perform XPath queries.
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", wordmlNamespace);
// Get the document part from the package.
// Load the XML in the document part into an XmlDocument instance.
XmlDocument xdoc = new XmlDocument(nt);
xdoc.Load(wdDoc.MainDocumentPart.GetStream());
MainDocumentPart main = wdDoc.MainDocumentPart;
IEnumerable<OpenXmlElement> elem = main.Document.Body.Descendants().ToList();
Paragraph p;
ParagraphProperties pp = new ParagraphProperties();
ParagraphMarkRunProperties prmp = new ParagraphMarkRunProperties();
Vanish v = …
Run Code Online (Sandbox Code Playgroud) 我为我的应用程序定义了以下路由:
routes.MapRoute(
"Referral", // Route name
"{referralCode}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个ActionLink来继续我的AdminController上的Index操作:
@Html.ActionLink("admin", "Index", "Admin")
Run Code Online (Sandbox Code Playgroud)
但是,执行视图时,ActionLink呈现为(省略了索引操作值):
<a href="/Admin">admin</a>
Run Code Online (Sandbox Code Playgroud)
通常情况下这可以,但它会导致与"推荐"路线发生冲突.
注意:如果我使用ActionLink呈现不同的操作,如"默认",则ActionLink会正确呈现:
<a href="/Admin/Default">admin</a>
Run Code Online (Sandbox Code Playgroud)
"默认"操作正确呈现的事实使我相信问题与为路由指定的默认值有关.无论如何还要强制ActionLink呈现"索引"动作吗?
我有一个坚实的.NET背景,除了ASP.NET MVC,我想接受.特别是我在WPF(MVVM),各种版本的Silverlight,LINQ(POCO和XML)以及核心框架(C#,VB和最近的F#)方面都有很多经验.
我缺少并且可能相关的是(显然除了ASP.NET MVC)LINQ to SQL和Entity Framework.
我知道"普通旧的"ASP .NET的基础知识(但实际上并没有超出基础知识),但我对SQL,HTML,CSS,JS等并不陌生.
问题:如果你从类似我的背景开始学习ASP.NET MVC3,你发现什么方法是有效的(或不是),因此会推荐?
注意:我应该提一下,我也对最佳实践和模式感兴趣.我自费发现这可能比学习"工作原理"更重要(例如,几乎每本WPF书都会教你关于模板,绑定等的所有内容,但不要提及MVVM或其他基本模式.一个大项目).
c# ×5
openxml-sdk ×5
asp.net-mvc ×4
openxml ×4
.net ×2
actionlink ×1
appendchild ×1
excel ×1
excel-2010 ×1
moq ×1
mvvm ×1
silverlight ×1
unit-testing ×1
wpf ×1