Поскольку вы сразу говорите, что вы новичок, я скажу вам, что то, как вы это делаете, не лучший способ достичь того, чего вы пытаетесь достичь.
Если поместить кнопку отправки внизу формы, вы получите данные для публикации и привязки к продукту, если вы измените верхнюю часть формы на
@using (Html.BeginForm("AddToCart", "WHATEVERYOURCONTROLLERISCALLED"))
но я думаю, что здесь вам не хватает нескольких ключевых моментов.
Есть некоторые соглашения, которые вы, кажется, игнорируете
ShoppingCart.cs должен называться ShoppingCartController.cs и находиться в папке контроллеров вашего проекта
Вместо того, чтобы называть каждую цену в модели, вы можете использовать список вариантов цен и отображать их в форме в виде серии переключателей, оставляя взаимоисключающий выбор. например.
Модель
public class Product{
// remove all the different price properties.
// other properties go here...And while you are at it Use Pascal case for property names Eg. displaySize would be DisplaySize but I guess that is up to you.
[Required]
public string PriceChoice { get; set; }
}
Контроллер
public class ShoppingCartController : Controller
{
public ActionResult Details(int productId)
{
// get the product from the database
var model = Database.GetProductById(productId);
// set a default if you want
model.PriceChoice = "a";
return View(model);
}
[HttpPost]
public ActionResult AddToCart(Product model)
{
// do whatever you need to do
return RedirectToAction("Details", new { id = model.Id });
}
}
Вид
@using (Html.BeginForm())
{
<div>A: @Html.RadioButtonFor(x => x.PriceChoice , "a")</div>
<div>B: @Html.RadioButtonFor(x => x.PriceChoice , "b")</div>
@Html.ValidationMessageFor(x => x.PriceChoice )
<input type="submit" value="OK" />
}
Теперь все это очень кратко и просто, поэтому я надеюсь, что вы поняли суть.
Также вы найдете некоторое значение в чтении этого Post Redirect Get Так что, хотя это не строго относится к тому, что вы делаете, оно объяснит структуру кода, который вы читаете, в примерах, где Вы видите RedirectToAction.
Теперь, если вы хотите сделать это очень умно, вам придется изучить некоторый javascript и выполнить команду Ajax.
Надеюсь, это поможет