Tag: asp.net mvc 4

将多个参数从url传递到html.actionlink

我是MVC的新手,当我尝试通过URL传递多个参数时,我正在努力使用路由。 从包含URL的页面: /PersonCAFDetail/Index/3?memberid=4 …我正在尝试将Html.ActionLink设置为指向Create操作,使得id = 3且memberid = 4。 阅读了许多类似的post后,似乎以下内容应该有效: @Html.ActionLink(“Create New”, “Create”, null, new { memberid = “memberid” }) 但是,这会导致URL创建如下: Create New 我有一条路线设置为: routes.MapRoute( name: “PersonCAFDetail”, url: “PersonCAFDetail/Create/{id}/{memberid}”, defaults: new { controller = “PersonCAFDetail”, action = “Create”, id = “@\d+”, memberid = @”\d+” } ); 控制器接受两个参数,如下所示: public ActionResult Create(int id, int memberid) { int cafID […]

启用 – 迁移时出错

我是EF的新手,当我尝试在PMC控制台中运行Enable-Migrations时出现错误:使用“1”参数调用“LoadFrom”的exception: “Could not load file or assembly ‘file:///…\pa ckages\EntityFramework.6.0.1\tools\EntityFramework.PowerShell.Utility.dll’ or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)” At …\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1:780 char:62 + $utilityAssembly = [System.Reflection.Assembly]::LoadFrom <<<< ((Join-Path $ToolsPath EntityFramework.PowerShell.Utility.dll)) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException You cannot call a method on a null-valued expression. At …\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1:781 […]

将entity framework从MVC移动到另一个项目会导致重新迁移

我目前有一个asp.net MVC 4应用程序,它包含Entity框架6 Code First模型,DbContext和Migrations。 为了将它与我的Web应用程序分开,以便我可以在另一个项目中重用这些数据库类,我已将所有相关的Entity Framework类移动到它们自己的项目中。 但是现在当我运行解决方案时,它认为我的模型已经更改并尝试再次运行我的所有迁移。 问题似乎在于我使用SetInitializer ,好像我注释掉了这一行,我可以正常运行Web应用程序。 public static class DatabaseConfig { public static void Initialize() { System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion()); // make sure the database is created before SimpleMembership is initialised using (var db = new G5DataContext()) db.Database.Initialize(true); } } 在我尝试移动所有Entity Framework类之前,这不是问题。 这是不可能的,还是我做了一些根本错误的事情?

在IValidatableObject.Validate方法中访问数据库是个好主意吗?

我有一个模型课。 相关数据库表对两个字段(例如Column1和Column2)具有唯一约束。 我不确定在保存对象之前validation对象的最佳方法是什么。 我正在考虑实现IValidatableObject并在Validate方法中进行此validation。 这是个好主意吗? 我不确定,因为它需要从实体类中的DB读取数据。 public class Class1 :IValidatableObject { [Key] public int ID { get; set; } [Required] public int Column1 { get; set; } [Required] public int Column2 { get; set; } public IEnumerable Validate(ValidationContext validationContext) { using (DatabaseContext db = new DatabaseContext()) { //access DB to check if this combination of […]

.NET MVC路由 – 在路由开始时捕获?

有什么方法可以匹配: /a/myApp/Feature /a/b/c/myApp/Feature /x/y/z/myApp/Feature 有一条路线不明确知道myApp / Feature之前的路径是什么? 我基本上想做的是: RouteTable.Routes.MapRoute( “myAppFeatureRoute”, “{*path}/myApp/Feature”, new { controller = “myApp”, action = “Feature” }); 但是你不能在路线的开头放一个笼子。 如果我只是尝试“{path} / myApp / Feature”,那将匹配“/ a / myApp / Feature”而不是“/ a / b / c / myApp / Feature”。 我也尝试了一个正则表达式的捕获,没有任何帮助。 RouteTable.Routes.MapRoute( “myAppFeatureRoute”, “{path}/myApp/Feature”, new { controller = “myApp”, action = “Feature”, path = @”.+” […]

在MVCrazor回来后,maintaning下降选定状态?

在MVC 4 Web中,我有下面的示例代码下拉列表: @(Html.DropDownList(“Condition2”, new SelectList(Model.Makes, “CCultureId”, “CTitle”), “All”,new {@class=”span3″})) 我将All作为选择和按下按钮的第一个选项,页面显示其中的数据。 回帖后,下拉按钮按下按钮重置,你能指导我如何在页面回发后保持其状态下降(我明白在MVC4中没有回发,我认为它是一次往返服务器的回程)。

如何使用signalR向特定用户发送消息

我有一些signalR的问题,我无法向特定的User From Hub发送消息。 我想这样做: public void Send(string userToId, string userForId, string message) { IHubContext context = GlobalHost.ConnectionManager.GetHubContext(); //userForId – it is Session[“UserId”] context.Clients.User(userForId).updateMessages(message); } 我已经阅读过这个主题: http : //www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections ,但我不清楚,因为我没有这个var name = Context.User.Identity.Name; 我在Session变量中有用户信息,第二个是当我得到connectionId时这样: var myClientId = $.connection.hub.id; 我刷新页面或单击项目上的另一个菜单时,connectionId已更改。 我有一些问题:1)我可以在没有connectionId的情况下向特定用户发送消息(仅使用session [“UserId”])吗? 2)总的来说,如何使用SignalR轻松实现一对一的消息传递? PS我正在使用ASP.NET MVC(C#)

在存储库模式中按ID过滤是不好的做法

我正在使用ASP.NET MVC4和Entity Framework 5 。 基本上每个控制器操作结果都按登录的用户公司ID过滤db结果 。 我刚刚开始实现一个存储库模式来返回模型,而不是直接从控制器中过滤DbContext。 (将companyID传递到存储库以过滤方法的结果) 我有一种有趣的感觉,这样做是不好的做法,但一直无法找到有关该主题的任何信息。 我将在下面插入我当前代码的基本版本,我将不胜感激任何关于它是否是不良做法的信息,以及为什么如此。 IBookingSystemRepository.cs public interface IBookingSystemRepository : IDisposable { IEnumerable GetAppointments(); IEnumerable GetAppointments(bool includeDeleted); IEnumerable GetClients(); IEnumerable GetClients(bool includeDeleted); void Save(); } BookingSystemRepository.cs public class BookingSystemRepository : IBookingSystemRepository { private BookingSystemEntities db; int CompanyID; public BookingSystemRepository(BookingSystemEntities context, int companyID) { this.db = context; this.CompanyID = companyID; […]

“System.Threading.Tasks.Task`1 ”显示而不是视图

我有一个控制器 public class InvitationController : Controller { [HttpPost] [ValidateAntiForgeryToken] public async Task Create(InvitationModel invitationmodel) { if (ModelState.IsValid) { var regLink = _repo.SaveAndGetRegistrationLink(invitationmodel); IEMailer mailer = new EMailer(); var inv = mailer.Invitation(invitationmodel.Email, regLink); await Task.WhenAll(new AsyncEmailSender().SendEmail(inv)); return RedirectToAction(“Index”); } return View(invitationmodel); } } 它在我的localhost上工作正常(在发送电子邮件后重定向到所需的页面)。 我将我的网站发布到smarterasp.net 现在它显示一个字符串而不是重定向: System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult] 是什么原因,以及如何解决? 艾玛没有记录任何东西。 电子邮件实际上已发送。 我尝试添加MVC dll。 以下所有文件都位于我的网站dll旁边。 System.Web.Mvc Microsoft.Web.Infrastructure System.Web.Razor […]

Linqexception:只能从linq到实体调用函数

我有一个StudentReceipts表, ReceiptNo存储为string(001,002,003,..,099,..) 。 我想获取最后的receiptno详细信息,以便为下一个事务增加receiptno。 这就是我的尝试 var _lastGeneratedRecDetails = _db.StudentReceipts .AsEnumerable() .Where(r => r.Status == true && EntityFunctions.TruncateTime(r.DueDate.Value) >= _startDate.Date && EntityFunctions.TruncateTime(r.DueDate.Value) Int32.Parse(x.ReceiptNo)) .FirstOrDefault(); 但是我得到以下例外 此函数只能从linq调用到实体 任何帮助将受到高度赞赏。