0

In my asp.net mvc form I have 2 buttons, one to save which will save data from the from in a list in sharepoint and the second button does the same and additionally it applies some css colors.

I doubt however how to use 2 actions on the same form (same controller) this is my view

   @{
    Layout = "~/Views/Shared/_LayoutPage2.cshtml";
}
@using (Html.BeginForm("Index", "Movies", FormMethod.Post))
{
<div class="row">
    <div class="col-md-8">
        <div class="col-xs-6 col-sm-3" id="stylesheet">Hojas de estilos</div>
        <div class="col-xs-6 col-sm-3">
            @Html.DropDownList("cssFiles", (IEnumerable<SelectListItem>)ViewBag.cssFiles, "Crear Nuevo", new { @class = "form-control", @id = "selCssFile" })
            <span>
                <input type="text" class="form-control" id="txtFileName" style="display:none;" placeholder="Nombre del archivo">
            </span>
        </div>
    </div>
    </div>
<div class="row">
    <div class="col-md-8">
        Color base, links, botones, borde encabezado y pie
    </div>
    <div class="col-md-4">
        <div id="colorSelector" class="colorSelector"><div style="background-color: #0000ff"></div></div>
    </div>
</div>
<div class="row">
    <div class="col-md-8">
        Fondo de la pagina, fondo de los cuadros
    </div>
    <div class="col-md-4">
        <div id="colorSelector2" class="colorSelector"><div style="background-color: #0000ff"></div></div>
    </div>
</div>
<div class="row">
    <div class="col-md-8">
        Navegación
    </div>
    <div class="col-md-4">
        <div id="colorSelector3" class="colorSelector"><div style="background-color: #0000ff"></div></div>
    </div>
</div>
<div class="row">
    <div class="col-md-8">
        Navegación (Item seleccionado)
    </div>
    <div class="col-md-4">
        <div id="colorSelector4" class="colorSelector"><div style="background-color: #0000ff"></div></div>
    </div>
</div>
<div class="row">
    <div class="col-md-8">
        Pie de página
    </div>
    <div class="col-md-4">
        <div id="colorSelector5" class="colorSelector"><div style="background-color: #0000ff"></div></div>
    </div>
</div>
<div class="row" id="buttons">
    <div class="col-md-8">
    </div>
    <div class="col-md-4">
        <button type="button" class="btn btn-success">Guardar</button>
        <button type="button" class="btn btn-primary">Guardar y aplicar</button>
    </div>
</div>
}

My index action on the customize controller so far

 public class CustomizeController : Controller
    {
        // GET: Customize
        public ActionResult Index()
        {
            User spUser = null;

            var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext);

            using (var cc = spContext.CreateUserClientContextForSPHost())
            {
                int aprovisionado = (int)cc.Web.GetPropertyBagValueInt("Vinculosc.PlantillasIntranet.Aprovisionado", 0);
                if (aprovisionado == 0)
                {
                    string libraryName = "ConfiguraciónColores";
                    Dictionary<string, string> fields = new Dictionary<string, string>();
                    fields.Add("Color1", "Text");
                    fields.Add("Color2", "Text");
                    fields.Add("Color3", "Text");
                    fields.Add("Color4", "Text");
                    fields.Add("Color5", "Text");
                    //ProvisionTemplate(cc);
                    CreateLibrary(cc, libraryName);
                    AddFields(cc, libraryName, fields);
                }
            }
            #region comments
            /*Uri hostWeb = new Uri(Request.QueryString["SPHostURL"]);

            using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity)) 
            {
                var web = clientContext.Web;

                clientContext.Load(web, w => w.Lists.Include(l => l.Title).Where(l => !l.hidden));
                clientContext.ExecuteQuery();

                return View(web.Lists);
            }*/
            #endregion

            return View();
        }
3
  • What is your question? Commented Apr 6, 2015 at 22:58
  • in the c# code, how can I know which button was pressed inside the form Commented Apr 6, 2015 at 23:00
  • All you have shown is a GET method, not a POST method. You don't even have a form to post back (unless your posting using ajax, but you haven't indicated that eithet), and you have not given any of your controls a name attribute so there is nothing to post back anyway. Commented Apr 6, 2015 at 23:03

2 Answers 2

1

You can put the same name in the view with different value

<button type="submit" name="Guardar" value="guardar" class="btn btn-success">Guardar</button>
<button type="submit" name="Guardar" value="aplicar" class="btn btn-primary">Guardar y aplicar</button>

And in the Controller you can check the value of the button

if (Request["Guardar"].ToString() == "guardar")
{
    //Your code for the first button
}
else
{
    //Your code for the second button
}
Sign up to request clarification or add additional context in comments.

Comments

1

Your button type should be "submit", and you can give them a name... Same name, that can be reused in a model, or by Request.Form["GiveAName"]

Your controller should have a

[HttpPost]
public ActionResult Index()
{
... Your code to retrieve form values
}

Anyway that's bad coding... You should work with models to inject on the view, that same model could be retrieved back and so you don't have to worry about retrieving form values. :=)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.