我正在使用我正在创建的自定义工作流解决方案。我想创建一个具有模型的回发,以及两个代表我已完成的操作和步骤的整数值。我不想将它们添加到模型中,因为它们只在这个地方使用。此回发的签名将是这样的。
[HttpPost]
public void ProcessWorkflowAction(EditScreenModelValidation model, int stepActionId, int stepNumber)
{
//Some work on model and actions
}
Run Code Online (Sandbox Code Playgroud)
我真的很想通过 JS 来做到这一点,因为这是目前我获取 StepActionId 和 StepId 的方式。有没有办法把模型打包通过JS发送?
var modelObj = CreateModelData();
var postObj = JSON.stringify(modelObj);
$.ajax({
type: "POST",
traditional: true,
dataType: "json",
url: "url",
data: { model: modelObj, stepActionId: stepId, stepNumber: 3 }
cache: false,
complete: function (data) {
}});
CreateModelData = function () {
var modelObj = {};
var modelArray = $('#frm').serializeArray()
$.each(modelArray, function (index, value) {
assign(modelObj, value.name, value.value);
}) …Run Code Online (Sandbox Code Playgroud) 我有一个页面可以调用另一个局部视图。该页面可以很好地加载,但是当出现验证错误时,它似乎多次调用了post方法。
导致问题的代码在这里:
<div>
@{Html.RenderAction("ViewUploadedDocs", "TrackingHome", new { number = @Model.Id.ToString() });}
</div>
Run Code Online (Sandbox Code Playgroud)
这应该在控制器中调用以下方法。
public ActionResult ViewUploadedDocs(string number)
{
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
它没有用[HttpGet]或[HttpPost]装饰。不断被调用的方法是页面的post方法。
[HttpPost]
[MultipleButton(Name = "action", Argument = "Save")]
public ActionResult Edit(EditScreenModelValidation model)
{
if (ModelState.IsValid)
{
return RedirectToAction("UserWorkflows", "Home", new { Area = "Workflow" });
}
return View("Edit", model);
}
Run Code Online (Sandbox Code Playgroud)
我已经读过stackoverflow,那里的人们在调用他们试图获取的post方法的页面,但是我正在调用我的主页而不是我试图获取的页面的post方法。如果我在主页上删除了renderAction行,则该页面可以正常工作,并且该操作不会在其中调用“编辑”页面。
所以只是好奇,我有一个有内部网站和外部网站的应用程序。他们的数据库是相同的。基本上,内部应用程序供用户更改外部应用程序上显示的数据。因此,为此,我决定为应用程序创建一个数据库上下文以用于内部数据库连接。然后,我创建了另一个从外部连接的内部继承的上下文,我这样做是因为我认为我可以将它们添加到服务中并将每个上下文设置到它自己的数据库中。当我将它们注入到我的启动子类中时,两个数据库连接都指向同一个数据库。为什么是这样?所以我的上下文是:
public class AppContext : DbContext
{
public AppContext() { }
public AppContext(DbContextOptions<AppContext> options): base(options)
{ }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Folder.Folder>().ToTable("Folders");
modelBuilder.Entity<File.File>().ToTable("Files");
modelBuilder.Entity<DocumentView>().ToTable("DocumentViews")
.HasKey(c=> new { c.PersonId, c.DocId });
modelBuilder.Entity<AppInfo>().ToTable("AppInfo");
}
public DbSet<Folder.Folder> Folders { get; set; }
public DbSet<File.File> Files { get; set; }
public DbSet<DocumentView> DocumentViews { get; set; }
public DbSet<AppInfo> AppInfos { get; set; }
}
public class ExternalAppContext : AppContext
{
public ExternalAppContext(DbContextOptions<AppContext> options) : base(options)
{ }
}
Run Code Online (Sandbox Code Playgroud)
当我在我的初创公司中注册它们时,我就这样注册了它们。
services.AddDbContext<AppContext>(options => …Run Code Online (Sandbox Code Playgroud)