After saving my data to database I want to display the information entered by the user in another page (printRegInfo.cshtml). How can I do that?
public ActionResult Create(FirmServiceRegistrationViewModel firmServiceReg)
{
try
{
ViewBag.ServiceId = new SelectList(db.ServicesModels, "ServiceId", "ServiceName");
if (ModelState.IsValid)
{
FirmsModel frm_ = new FirmsModel();
frm_.Name = firmServiceReg.Name;
frm_.PropName = firmServiceReg.PropName;
frm_.Address = firmServiceReg.Address;
db.FirmsModels.Add(frm_);
db.SaveChanges();
int frmId = frm_.FirmId;
FirmServiceRegistrationModel frmServReg = new FirmServiceRegistrationModel();
frmServReg.ServiceId_ = firmServiceReg.ServiceId;
frmServReg.FirmId_ = frmId;
db.FirmServiceRegistrationModels.Add(frmServReg);
db.SaveChanges();
}
return View();
}
catch (Exception)
{
throw;
}
}
Now on successful insert of data I want to pass the data entered by the user [Name, PropName, Address] to the view page say printRegInfo.cshtml. How can I do that?
The below code just get entered info and carried to another page using temp data. Hence you need to cast the as per model data and populate in view.
public ActionResult Create(FirmServiceRegistrationViewModel firmServiceReg)
{
try
{
ViewBag.ServiceId = new SelectList(db.ServicesModels, "ServiceId", "ServiceName");
if (ModelState.IsValid)
{
FirmsModel frm_ = new FirmsModel();
frm_.Name = firmServiceReg.Name;
frm_.PropName = firmServiceReg.PropName;
frm_.Address = firmServiceReg.Address;
db.FirmsModels.Add(frm_);
db.SaveChanges();
int frmId = frm_.FirmId;
FirmServiceRegistrationModel frmServReg = new FirmServiceRegistrationModel();
frmServReg.ServiceId_ = firmServiceReg.ServiceId;
frmServReg.FirmId_ = frmId;
db.FirmServiceRegistrationModels.Add(frmServReg);
db.SaveChanges();
TempData["FirmRegData"]=frm_;
}
return RedirectToAction("printRegInfo","ControllerName");
}
catch (Exception)
{
throw;
}
}
public ActionResult printRegInfo()
{
try
{
FirmsModel frm_ =(FirmsModel)TempData["FirmRegData"];
// Here you will get all entered info.
}
return view(frm_);
}
catch (Exception)
{
throw;
}
}
Related
Below is my HTTP GET and HTTP POST Codes. I want to add .Include Item Location for my drop down list. Please help identity where I can add the Include for my Item Location on below code. Thank you!
Below Is my HTTPGET Method...
[HttpGet]
public ActionResult AddOrEditItem(int id = 0)
{
Item item = new Item();
if (id != 0)
{
using (erpdb db = new erpdb ())
{
item = db.Items.Where(x => x.ItemId == id).FirstOrDefault<Item>();
}
}
return View(item);
}
Below Is my HTTPPOST Method
[HttpPost]
public ActionResult AddOrEditItem(Item item)
{
try
{
using (erpdb = new erpdb())
{
if (item.ItemId == 0)
{
db.Items.Add(item);
db.SaveChanges();
}
else
{
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();
}
}
return Json(new { success = true, html = GlobalClass.RenderRazorViewToString(this, "ViewAllItems", GetAllItems()), message = "Submitted Successfully" }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { success = false, message = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
Please help how can I add my Item Location so that it can be selected on my dropdownlist view and as well as saved
I was able to solve my own issue myself by doing the following:
Step 1: Creating a viewmodel for items so that I can include item location on my form
Step 2: added .Include when calling the database so that I can include it to my indes view of items
i am saving data through Model. SaveChanges not saving new record in database.
and not throwing any exception. kindly help anyone to get me out this situation.
[HttpPost]
public ActionResult SaveAmbulanceLocation1(Ambulance_Position AMmodel)
{
db.Configuration.ProxyCreationEnabled = false;
// var m = db.Ambulance_Position.FirstOrDefault(x => x.A_unique_ID == AMmodel.A_unique_ID);
try
{
if (ModelState.IsValid)
{
AMmodel.Date_Time = System.DateTime.Now;
db.Ambulance_Position.Add(AMmodel);
db.SaveChanges();
}
}
catch (Exception e )
{
}
return Json("saved", JsonRequestBehavior.AllowGet);
}
I would suggest making changes to your ActionMethod as shown below; basis this accepted Stackoverflow answer.
Note that this example is not tested though; and I might be wrong...
[HttpPost]
public ActionResult SaveAmbulanceLocation1(Ambulance_Position AMmodel)
{
db.Configuration.ProxyCreationEnabled = false;
Ambulance_Position ambulance_position = new Ambulance_Position();
ambulance_position = AMmodel;
// var m = db.Ambulance_Position.FirstOrDefault(x => x.A_unique_ID == AMmodel.A_unique_ID);
try
{
if (ModelState.IsValid)
{
//AMmodel.Date_Time = System.DateTime.Now;
ambulance_position.Date_Time = System.DateTime.Now;
db.Ambulance_Position.Add(ambulance_position);
db.SaveChanges();
}
}
catch (Exception e)
{
}
return Json("saved", JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult UpdateDetail(User user)
{
bool Status = false;
string message = "";
// Model Validation
if (ModelState.IsValid)
{
using (UsersDatabaseEntities ude = new UsersDatabaseEntities())
{
var v = ude.Users.Where(a => a.Email == User.Identity.Name).FirstOrDefault();
user = v;
ude.Entry(User).State = EntityState.Modified;
ude.SaveChanges();
}
return View(user);
}
}
I keep on getting an error while saving data to the database.
UpdateDetail worked while retrieving message, but i keep getting error when saving.
Your issue is if your ModelState.IsValid == false, then you are not returning anything. I put a comment in code below where it is.
Depending on what your logic needs to do, would determine what needs to be returned if IsValid == false
public ActionResult UpdateDetail(User user)
{
bool Status = false;
string message = "";
// Model Validation
if (ModelState.IsValid)
{
using (UsersDatabaseEntities ude = new UsersDatabaseEntities())
{
var v = ude.Users.Where(a => a.Email == User.Identity.Name).FirstOrDefault();
user = v;
ude.Entry(User).State = EntityState.Modified;
ude.SaveChanges();
}
// this is your issue, this needs to be outisde the if statement, or you have to do an else and return null (or whatever you need to based off your logic)
return View(user);
}
}
Keep return statement outside of If statement. this would fix your error.If model is valid model updated with user details from database will be pushed to View. other wise same user model will be pushed to the view.
[HttpPost]
public ActionResult UpdateDetail(User user)
{
bool Status = false;
string message = "";
// Model Validation
if (ModelState.IsValid)
{
using (UsersDatabaseEntities ude = new UsersDatabaseEntities())
{
var v = ude.Users.Where(a => a.Email == User.Identity.Name).FirstOrDefault();
user = v;
ude.Entry(User).State = EntityState.Modified;
ude.SaveChanges();
}
}
return View(user);
}
I am using a standard list method for my lookups I use this for winforms and works fine just trying to re use on web and its not displaying my items.
public List<SISLookupLists> GetGender()
{
List<SISLookupLists> lookups = new List<SISLookupLists>();
try
{
var q = from lookup in schoolEntities.Genders
orderby lookup.description
select new
{
Code = lookup.code,
Description = lookup.description.Trim()
};
if (q != null)
{
Array.ForEach(q.ToArray(), l =>
{
lookups.Add(new SISLookupLists(l.Code, l.Description));
});
}
}
catch (Exception ex)
{
throw new EntityContextException("GetGender failed.", ex);
}
return lookups;
}
public SISDBContext _db = new SISDBContext();
rdGender.DataSource = _db.GetGender();
rdGender.DataTextField = "Description";
rdGender.DataValueField= "Code";
rdGender.DataBind();
Any idea what I am doing wrong here guys.
I'm trying to edit an article in my asp.net mvc project. This is what I do when I create a project:
public ActionResult Create(ArticleViewModel model)
{
if (ModelState.IsValid)
{
try
{
// Get the userID who created the article
User usr = userrepo.FindByUsername(User.Identity.Name);
model.UsernameID = usr.user_id;
repository.AddArticle(model.Title, model.Description, model.ArticleBody);
}
catch (ArgumentException ae)
{
ModelState.AddModelError("", ae.Message);
}
return RedirectToAction("Index");
}
return View(model);
}
In my repository:
public void AddArticle(string Title, string Description, string ArticleBody)
{
item Item = new item()
{
item_title = Title,
item_description = Description,
article_body = ArticleBody,
item_createddate = DateTime.Now,
item_approved = false,
user_id = 1,
district_id = 2,
link = "",
type = GetType("Article")
};
try
{
AddItem(Item);
}
catch (ArgumentException ae)
{
throw ae;
}
catch (Exception)
{
throw new ArgumentException("The authentication provider returned an error. Please verify your entry and try again. " +
"If the problem persists, please contact your system administrator.");
}
Save();
// Immediately persist the User data
}
public void AddItem(item item)
{
entities.items.Add(item);
}
But now I want to edit an article, this is what I have till now:
public ActionResult Edit(int id)
{
var model = repository.GetArticleDetails(id);
return View(model.ToList());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ArticleViewModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the User
try
{
item Item = repository.GetArticleDetailsByTitle(model.Title);
Item.item_title = model.Title;
Item.item_description = model.Description;
Item.article_body = model.ArticleBody.
// HERE I NEED TO SAVE THE NEW DATA
return RedirectToAction("Index", "Home");
}
catch (ArgumentException ae)
{
ModelState.AddModelError("", ae.Message);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
As you can see I check the adjusted text and drop it in "Item". But how can I save this in my database? (the function in my repository)
I think your save() method had entityobject.SaveChanches()
So you want to call that save() method in here
try
{
item Item = repository.GetArticleDetailsByTitle(model.Title);
Item.item_title = model.Title;
Item.item_description = model.Description;
Item.article_body = model.ArticleBody.
**Save();**
return RedirectToAction("Index", "Home");
}
should be need to only Save() method, could not need to AddItem() method .
I'm afraid you'll need to get article again from database, update it and save changes. Entity framework automatically tracks changes to entites so in your repository should be:
public void EditArticle(Item article)
{
var dbArticle = entities.items.FirstOrDefault(x => x.Id == article.Id);
dbArticle.item_title = article.item_title;
//and so on
//this is what you call at the end
entities.SaveChanges();
}