I am trying to transfer details the user has entered in the "Create" view to another view "Confirmation" Code is below:
我正在尝试将用户在“创建”视图中输入的详细信息转移到另一个视图“确认”代码如下:
Create Action Result
创建操作结果
public ActionResult Create()
{
return View(new Charity());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,DisplayName,Date,Amount,Comment")] Charity charity)
{
if (ModelState.IsValid)
{
if (!string.IsNullOrEmpty(charity.Comment))
{
var comment = charity.Comment.ToLower().Replace("hot", "###").Replace("cold", "###").Replace("Slow", "###").Replace("enjoy", "###").Replace("BAD", "###");
charity.Comment = comment; //Replaces textx from model variable - comment
charity.TaxBonus = 0.20 * charity.Amount;
}
if (string.IsNullOrEmpty(charity.DisplayName))
{
charity.DisplayName = "Annonymus"; //If user doesnt enter name then Annonymus
}
db.Donations.Add(charity);
db.SaveChanges();
return RedirectToAction("Confirmation", "Charities" , new { id = charity.ID });
}
return View(charity);
}
Create View
创建视图
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Charity</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.DisplayName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DisplayName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DisplayName, "", new { @class = "text-danger" })
</div>
</div>b
<div class="form-group">
@Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.TaxBonus, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.TaxBonus, new { htmlAttributes = new { @class = "form-control" , @readonly = "readonly" } }
)
@Html.ValidationMessageFor(model => model.TaxBonus, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Comment, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Comment, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Comment, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
AdditionalInfo ActionResult
AdditionalInfo ActionResult
[HttpGet]
public ActionResult Additionalinfo(int id)
{
return View("Additionalinfo", new { id });
}
AdditionalInfo View
AdditionalInfo视图
@{
ViewBag.Title = "Additionalinfo";
}
<h2>Additionalinfo</h2>
Model
模型
public class Charity
{
public int ID { get; set; }
[RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only please")]
public string DisplayName { get; set; }
[DataType(DataType.Currency)]
[Range(2, Int32.MaxValue, ErrorMessage = "Atleast £2.00 or a whole number please")]
public int Amount { get; set; }
[DataType(DataType.Currency)]
public Double TaxBonus { get; set; }
public String Comment { get; set; }
}
public class CharityDBContext : DbContext //controls information in database
{
public DbSet<Charity> Donations { get; set; } //creates a donation database
}
Hi I am trying to get the information Inputted from the "Create" to be displayed in the "Confirmation", I can just display the database but what I want is the specific information to be carried onto the next page, rather than a whole database. I am new to MVC so trying to get the hang of this.
你好,我正在尝试从“Create”中输入的信息显示在“confirm”中,我可以只显示数据库,但是我想要的是将特定的信息传递到下一个页面,而不是整个数据库。我是MVC的新手,所以我试着弄懂它。
I have created it on a new ActionResult which works but I can't get the passing data to work.
我在一个新的ActionResult上创建了它,它可以工作,但是我不能让传递的数据工作。
1 个解决方案
#1
1
You may use session for that:
您可以使用会话来实现:
var products=Db.GetProducts();
//Store the products to a session
Session["products"]=products;
//To get what you have stored to a session
var products=Session["products"] as List<Product>;
#1
1
You may use session for that:
您可以使用会话来实现:
var products=Db.GetProducts();
//Store the products to a session
Session["products"]=products;
//To get what you have stored to a session
var products=Session["products"] as List<Product>;