У меня есть настройка, в которой у Компании не может быть ни одного, ни одного или нескольких клиентов. Таким образом, нет строгих отношений между таблицей «Клиент» и «Компанией». Я создал окно поиска, в котором все компании заполнены. Затем, используя кнопку, клиент может быть прикреплен к компании. Я думал, что с помощью ActionLink
я смог бы добиться этого, так что мой поиск (вид) имеетC# Переход параметров к другому виду
@Html.ActionLink("Book", "Book", new { id = a.CompanyId })
где модель накинута, чтобы получить весь список компании. Теперь, когда я нажимаю ссылку, она заполняет адрес с правильными параметрами, Companies/Book/1
ID, с которым я играю, - это 1. Что правильно, однако представление «Я приземляюсь» - это новая модель клиента.
public class CustomerModel
{
[HiddenInput(DisplayValue = true)]
public long CompanyId { get; set; }
[HiddenInput(DisplayValue = false)]
public long CustomerId { get; set; }
[Display(Name = "Customer Name")]
[Required(ErrorMessage = "* required")]
public string CustomerName { get; set; }
[Display(Name = "Address Line 1")]
[Required(ErrorMessage = "* required")]
public string AddressLine1 { get; set; }
[Display(Name = "Postcode")]
[Required(ErrorMessage = "* required")]
public string Postcode { get; set; }
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "* required")]
[RegularExpression(@"\d*", ErrorMessage = "Not a valid phone number")]
public string PhoneNo { get; set; }
}
Несмотря на то, что я в состоянии видеть идентификатор передается (с помощью FireBug) является 1, так или иначе, когда я нажимаю на кнопку, чтобы представить вид на контроллер я получаю 0. Почему это было бы? Может ли кто-нибудь мне помочь?
РЕДАКТИРОВАТЬ - 1
Это контроллер.
public ActionResult Book()
{
return View(new CustomerModel());
}
[HttpPost]
public ActionResult SaveCustomer(CustomerModel model)
{
_companyService.SaveCustomer(model);
return RedirectToAction("Index");
}
Я попытался с помощью CompanyId
вместо идентификатора, он придумал другую ошибку.
Перед отправкой формы, адресная строка имеет: http://localhost:53294/Companies/Book?CompanyId=1
После отправки формы, адресная строка имеет: http://localhost:53294/Companies/SaveCustomer
Заявление INSERT конфликтного с ограничением FOREIGN KEY «FK_dbo.Customer_dbo. Company_CompanyId». Конфликт произошел в базе данных «BoilerServicing», таблице «dbo.Company», в столбце «CompanyId». Заявление было прекращено.
спасбросков метод сам по себе,
public void SaveCustomer(CustomerModel customer)
{
using (var db = new BoilerServicingDbContext())
{
Customer entity;
if (customer.CustomerId > 0)
{
entity = db.Customers.First(x => x.Id == customer.CustomerId);
}
else
{
entity = new Customer();
db.Customers.Add(entity);
}
entity.Name = customer.CustomerName;
entity.TelephoneNumber = customer.PhoneNo;
entity.AddressLine1 = customer.AddressLine1;
entity.PostCode = customer.Postcode;
entity.CompanyId = customer.CompanyId;
db.SaveChanges();
}
}
Можете ли вы опубликовать свой метод контроллера? – dotnetom
такой же вопрос здесь? #PaulFrancis –
@dotnetom, я закончил работу сейчас, обновит сообщение через несколько минут, когда вернусь домой. Я попытался использовать companyId, но дам это другому. – PaulFrancis