我有一个 MVC 5 应用程序,其后端是 Web API。对于对服务器的每个请求,我需要提供用户代理,我可以在控制器操作方法中获取它,var UserAgent = Request.UserAgent.ToString();然后在其他类中传递,例如(Controller => Service => HttpRequester => XXXHttpClient ),最后在XXXHttpClient类中的实际请求中使用但我认为可能有更好的方法来实现同样的目标。我尝试用谷歌搜索,但没有找到任何相关内容,所以如果我想直接在 XXXHttpClient 类中获取用户代理而不是随后传递,任何人都可以指导我什么是最佳实践。
我不知道该用在哪里Single,又该用在哪里SingleOrDefault。我理解两者的定义。
单身的:
它总是返回一行。
如果没有找到行,我会得到一个异常。
如果找到多行,我会得到一个异常。
单一或默认:
它总是返回一行,如果没有找到则返回默认值(What is the meaning of this DEFAULT VALUE").
如果有多行则异常。
问题1:“它将返回默认值”是什么意思
问题2:什么时候使用Single,什么时候使用SingleOrDefault。
我有一个删除功能,其中有以下代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(int resumeId)
{
var r = _context
.Resumes
.Where(c => c.ResumeId == resumeId).SingleOrDefault();
_context.Resumes.Remove(r);
_context.SaveChanges();
return RedirectToAction("ResumeCenter");
}
Run Code Online (Sandbox Code Playgroud)
我只是盲目地到处放置SingleOrDefault(我至少期望一个值),请告诉我一个现实世界的场景,何时我应该使用“Single”以及我应该在哪里使用“SingleOrDefault”。
我有一个模型InvoiceViewModel,它有一个属性 Items,它是一个列表。我想foreach在 Items 属性上运行并将其动态添加到列表中。
发票视图模型.cs
public class InvoiceViewModel
{
...
public List<ItemsViewModel> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ItemsViewModel.cs
public class ItemsViewModel
{
public string Name { get; set; }
public string UnitPrice { get; set; }
public string Quantity { get; set; }
public string TotalAmount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码将 InvoiceViewModel 中的项目动态添加到列表中。
var Items = InvoiceViewModel.Items;
var ItemsList = new List<ItemsViewModel>
{
foreach (var item in Items)
{
new ItemsViewModel { Name = …Run Code Online (Sandbox Code Playgroud) 以下代码不起作用:
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
Run Code Online (Sandbox Code Playgroud)
用户为空。模型有正确的值。
我将此代码更改为:
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
Run Code Online (Sandbox Code Playgroud)
它工作正常。为什么以及如何修复?
我目前正在学习MVC 5并且正在使用IDE Visual Studio,我是MVC的一个完整的初学者,但我确实知道C sharp到了不错的水平.
我正在遵循的教程已经在模型文件夹中添加了一个类,但是当我尝试这样做时,添加类的按钮是灰色的,因此您无法选择它.
我该怎么办?
我的一个视图上有一个文本框,该文本框不应该接受任何超过2个单词或少于2个单词的内容.这个文本框需要2个单词.
基本上这个文本框接受一个人的名字和姓氏.我不希望人们只输入其中一个.
有没有办法检查space2个单词和另一个字符之间的space字符以及第二个单词后面的任何字符letter,number如果它存在的话?我认为,如果用户意外地'胖手指'在第二个单词之后有一个额外的空格,那应该没问题,但仍然只有2个单词.
例如:
/* the _ character means space */
John /* not accepted */
John_ /* not accepted */
John_Smith_a /* not accepted */
John Smith_ /* accepted */
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
我已经设法开发了我的第一个具有CRUD功能的MVC 5 Web应用程序.
我的数据搜索记录的方法很少,但其中一个似乎没有按照我的预期进行.这是我的控制器搜索查询代码:
query = query.Where(c =>
c.PostCode.Contains(searchString)
|| c.Place1.Select(e => e.PostCode).Contains(searchString)
Run Code Online (Sandbox Code Playgroud)
这是我的模特:
public Place()
{
Place1 = new HashSet<Place>();
}
[Display(Name = "Postcode")]
public string PostCode { get; set; }
public virtual ICollection<Place> Place1 { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的数据库关系是一个自引用表 - > 1到0,因此字段名称相同.
任何人都可以解释为什么搜索功能会在搜索代码的两个部分的全部值"NR32 4TW"时带来预期结果,但只有搜索的第一个查询部分(在OR运算符之外)才会找到相同的记录使用"NR32 4T"进行部分搜索?
我已经检查了数据库中其他字段的查询,他们有同样的问题.
TDLR; LINQ".Contains()"在模型中的Collection上使用它时不会搜索字符串的各个部分.有谁能解释这种行为?
我目前正在使用MVC 5 Web应用程序,我被建议采用一种View per Controller方法,我觉得这种方法非常难以维护,MVC的优势是没收.
请建议我的应用程序将拥有大约180个用户界面页面,根据建议,这意味着180个控制器.
c# model-view-controller asp.net-mvc asp.net-mvc-4 asp.net-mvc-5
我正在制作一个mvc 5应用程序,而不是我使用过html页面的视图.现在我想要的是使用jQuery/Javascript获取我的应用程序中所有页面名称的列表,但没有找到任何帮助.请建议一些方法来做到这一点.我接下来会将这些名称存储在数据库中.
c# ×5
asp.net-mvc ×3
asp.net ×1
browser ×1
contains ×1
html5 ×1
javascript ×1
jquery ×1
linq ×1
user-agent ×1