Magellan Commands
Back to: Magellan Home
The web typically uses hyperlinks and postbacks to navigate between pages. With Magellan, we can use either C# code, Expression Blend Behaviors, or using a command.
The command option works especially well for Magellan applications that use the MVVM pattern. Below is an example controller:
public class CustomerController : Controller 
{
    public ActionResult Show(int customerId)
    {
        Model = new CustomerDetailsModel(GetCustomer(customerId));
        return Page();
    }
    public ActionResult Delete(int customerId)
    {
        DeleteCustomer(customerId);
        return Redirect("Home");
    }
}
The CustomerDetailsModel may look like this:
public class CustomerDetailsModel
{
    public CustomerDetailsModel(Customer customer) 
    {
        Customer = customer;
        DeleteCustomer = new NavigateCommand("Customers", "Delete", new { customerId = customer.Id });
    }
    public ICommand DeleteCustomer { get; private set; }
    public Customer Customer { get; private set; } 
}
The view can then simply bind the command to the UI elements:
<Button Content="Delete" Command="{Binding Path=DeleteCustomer}" />
Most MVVM frameworks also provide a RelayCommand or DelegateCommand or similar that allows you to pass a callback. This could also be used with Magellan; for example:
DeleteCommand = new DelegateCommand<Customer>(
    customer => Navigator.Default.Navigate("Customers", "Delete", new { customerId = customer.Id }
    );
See also:
Back to: Magellan Home